Swift 为什么reduce不能在Struct上工作?
我有以下代码Swift 为什么reduce不能在Struct上工作?,swift,struct,reduce,Swift,Struct,Reduce,我有以下代码 struct Tab { var origin:CGFloat var width:CGFloat init(width:CGFloat) { origin = 0 self.width = width } } let subTabs = [Tab(width:1), Tab(width:2)] let w = reduce(subTabs, CGFloat(0), { $0.width + $1.width }) 并期望reduce将我的结构
struct Tab {
var origin:CGFloat
var width:CGFloat
init(width:CGFloat) {
origin = 0
self.width = width
}
}
let subTabs = [Tab(width:1), Tab(width:2)]
let w = reduce(subTabs, CGFloat(0), { $0.width + $1.width })
并期望
reduce
将我的结构中的width
s相加。但是它会引发编译器错误(您可以在操场上测试)。减少需求的函数有两个参数:累积值和序列中的下一项。函数需要两个序列项(Tab
structs)。因为您返回的是一个浮点值,所以累计值是一个浮点值,而不是您期望的选项卡。正确的呼叫是:
let w = reduce(subTabs, CGFloat(0), { $0 + $1.width })
哇!我爱死你了。立即投票反对。你自己去投票吧。好吧,我喜欢这样。立即回答:-)谢谢。这就是它。@juan你能解释一下为什么第一个不需要是0.5美元吗?非常感谢。