我有一个 struct ,其中包含一组引用不同类型统计信息的属性.示例对象为:
class Stats {
stats: [Stat]
}
struct Stat {
id: UUID
countA: Int
countB: Int
countC: Int
totalAAttempts: Int
totalBAttempts: Int
totalCAttempts: Int
...
}
我正在用类中的一系列函数显示百分比.
class Stats {
stats: [Stat]
var countAPerc: Double {
let totalA = stats.reduce(0) { total, stat in
total + stat.countA
}
let totalAttemps = s.reduce(0) { total, stat in
total + stat.totalAAttempts
}
return Double(totalA) / Double(totalAttempts)
}
var: countAPercDisplay: String {
String(format: "%.1f", countAPerc * 100) + "%"
}
var countBPerc: Double {
let totalB = stats.reduce(0) { total, stat in
total + stat.countB
}
let totalAttemps = s.reduce(0) { total, stat in
total + stat.totalBAttempts
}
return Double(totalB) / Double(totalAttempts)
}
var: countBPercDisplay: String {
String(format: "%.1f", countBPerc * 100) + "%"
}
...
}
是否可以将属性的名称指定为函数中的参数,以防止相同的代码被反复重写?类似于:
func summarizeProperty(_ countProperty: PROPERTYNAME1, _ totalProperty: PROPERTYNAME2) -> Double {
let totalCount = stats.reduce(0) { total, stat in
total + stat.PROPERTYNAME1
}
let totalAttemps = s.reduce(0) { total, stat in
total + stat.PROPERTYNAME2
}
return Double(totalCount) / Double(totalAttempts)
}
func summarizedProperty(_ countProperty: PROPERTYNAME1, _ totalProperty: PROPERTYNAME2) -> String {
let summarized = summarizeProperty(PROPERTYNAME1, PROPERTYNAME2)
return String(format: "%.1f", summarized * 100) + "%"
}
然后叫它...
Text(summarizedProperty(countA, totalAAttempts))
提前谢谢你