【问题标题】:How to pass variable to stride by argument如何通过参数将变量传递给stride
【发布时间】: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.0stride(from: 0.0, to: 359.0, by: notchStep。很容易。除非编译器抱怨,否则基本上从不注释类型。
  • 所以基本上你只是在需要的地方使用转换而不是设置变量的类型?
  • 所以基本上你只需在编译器需要它的地方使用转换

标签: swift


【解决方案1】:

尝试在您的代码中删除:Double,使其显示为:

let notchStep: Int = 5

for degrees in stride(from: 0, to: 359, by: notchStep) {
    // do something
}

查看方法签名,我认为混合IntsDoubles 会产生问题。

【讨论】:

    猜你喜欢
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多