【发布时间】:2017-06-10 03:27:02
【问题描述】:
我试图通过参数将一个 Int 常量传递给我的 for 循环的跨步。它采用 T.stride 类型。
let notchStep:Int = 5
for degrees:Double in stride(from: 0, to: 359, by: notchStep) {
我收到此错误:
不能使用类型为“(from: Int, to: Int, by: Int)”的参数列表调用“stride”。我可以传递什么类型的值,或者如何将我的 Int 转换为适当的类型?
【问题讨论】:
-
尝试删除
:Double -
现在可以了。我只需要在以后使用它时投射度数。你能解释一下为什么吗?为什么swift不自动加宽或收窄?
-
这是类型注释废话的另一个很好的例子。与 Objective-C 不同,Swift 的强类型系统不支持混合类型。删除both注解,然后编译器推断所有类型都是
Int。如果您需要Double,请写let notchStep = 5.0和stride(from: 0.0, to: 359.0, by: notchStep。很容易。除非编译器抱怨,否则基本上从不注释类型。 -
所以基本上你只是在需要的地方使用转换而不是设置变量的类型?
-
所以基本上你只需在编译器需要它的地方使用转换。
标签: swift