在 Swift 2.0 中使用 reduce() 时出错

Error when using reduce() in Swift 2.0

注意:这也适用于 Swift 3.0

当我尝试使用 reduce 函数时,我收到一条错误消息:

reduce is unavailable: call the 'reduce()' method on the sequence

我已经想出了如何使用 enumerate() 函数来实现这一点,但我似乎无法解决这个问题。这是返回错误的代码行:

var hashValue: Int {
    return reduce(blocks, 0) { [=11=].hashValue ^ .hashValue }
}

您解决这个问题的方式与您解决 enumerate() 问题的方式相同。在 Swift 2 中,reduce 已作为全局函数被删除,并通过协议扩展作为符合 SequenceType 协议的所有对象的实例方法添加。用法如下

var hashValue: Int {
    return blocks.reduce(0) { [=10=].hashValue ^ .hashValue }
}