1

我在项目中使用CVCalendar,并且已将 Xcode 更新为 8.0 Beta。问题是我在一个文件中收到错误消息:

1) 无法使用类型为“()”的参数列表为类型“Int”调用初始化程序

2) 参数标签 '(body:)' 不匹配任何可用的重载

// MARK: - SequenceType

private var storage = [T]()

extension CVSet: Sequence {
    public func makeIterator() -> AnyIterator<T> {
        var power = 0
        let nextClosure : () -> T? = {

            (power < self.count) ? self.storage[Int(power += 1)] : nil //Getting error here self.storage[Int(power += 1)]
        }
        return AnyIterator(body: nextClosure)
    }
}
4

1 回答 1

0

+=运算符具有诸如 的类型,(Int, Int) -> _这意味着它的返回类型是_// ()void即,该函数不返回任何内容。

因此,表达式Int(power += 1)与 相同Int(),这是无效的。

这样做是为了防止隐藏在大型表达式中的讨厌的副作用。请尝试:

if (power < self.count) {
    power += 1
    return self.storage[power]
}
else {
    return nil
}
于 2016-06-14T13:09:54.733 回答