无法调用类型为'Int'的参数列表类型为'()'的初始化程序
问题描述:
我在项目中使用了CVCalendar,并且我已将Xcode更新为8.0 Beta。问题是我在一个文件接收错误说:无法调用类型为'Int'的参数列表类型为'()'的初始化程序
1)不能调用初始化程序与 类型的参数列表类型'诠释“()”
2)参数标签“(身体:)”不匹配任何可用的重载
// 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)
}
}
答
的+=
经营者有这样的类型(Int, Int) -> _
,这意味着它的返回类型为_
/()
/void
。即,该函数不返回任何东西。
因此,表达式Int(power += 1)
与Int()
相同,这是无效的。
这样做是为了防止隐藏在大型表情中的恶劣副作用。尝试改为:
if (power < self.count) {
power += 1
return self.storage[power]
}
else {
return nil
}