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美元吗?非常感谢。