我有一个对象列表T
,我想计算它们的和(T
对象)
var objects: Observable<List<T>>
T
对象有一个返回Int
值的方法。主要思想是获取每个对象并准备数组值(flatMap
函数)。下一步将是使用Int
值的reduce
函数。
let sum = values.reduce(0) { $0 + $1 }
问:如何获取每个T
对象?
发布于 2017-08-22 13:39:01
看看下面的解决方案,它试图演示您正在尝试做什么,您可能需要一个具有int属性的类型T的协议,如下例所示。你可以在游乐场上试试。
protocol Countable {
var value: Int { get }
init(value: Int)
}
class User: Countable {
var value: Int = 0
required convenience init(value: Int) {
self.init()
self.value = value
}
}
class UserGroup<T: Countable> {
func calculateTotal() {
let users: [T] = [T(value: 2), T(value: 21)]
let total = users.flatMap { ($0 as Countable).value }.reduce(0) { $0 + $1 }
print("total", total)
}
}
let userGroup = UserGroup<User>()
userGroup.calculateTotal()
https://stackoverflow.com/questions/45818676
复制相似问题