为什么 reduce 对 Struct 不起作用?

Why does reduce not work on Struct?

我有以下代码

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), { [=10=].width + .width })

并期望 reduce 总结我的结构中的 width。但是它会引发编译错误(您可以在 Playground 中测试)。

reduce 函数需要两个参数:累加值和序列中的下一项。您的函数需要两个序列项(Tab 结构)。由于您要返回一个浮点数,因此累积值是一个浮点数,而不是您期望的 Tab 。正确的叫法是:

let w =  reduce(subTabs, CGFloat(0), { [=10=] + .width })