【发布时间】:2017-06-06 17:01:44
【问题描述】:
当我尝试以下代码时:
extension Int{
func hello(to end: Int, by step: Int, task: (Int) -> Void ){
for i in stride(from: 4, to: 8, by: 2) {
task(i)
}
}
}
我收到错误消息:
错误:对于 i in stride(from: 4, to: 8, by: 2),无法使用类型为 '(from: Int, to: Int, by: Int)' 的参数列表调用 'stride'
注意:“stride”的重载存在这些部分匹配的参数列表:(to:Self,by:Self.Stride),(通过:Self,by:Self.Stride) for i in stride(from: 4, to: 8, by: 2)
我不明白为什么会发生这种类型的错误
【问题讨论】:
-
我不能说为什么会发生这个特定错误,但如果它不在
Int扩展中,它会按预期工作。 -
比较stackoverflow.com/q/39602298/2976878。在您的特定情况下的问题是编译器看到 Swift 2
stride方法,这些方法被声明为实例成员而不是全局函数(但现在不可用)。解决方法是一样的,在调用前加上模块名来消除歧义。
标签: swift3