Swift 无法转换类型为‘;Int’;到预期的参数类型‘;双人床’;

Swift 无法转换类型为‘;Int’;到预期的参数类型‘;双人床’;,swift,for-loop,Swift,For Loop,在以下代码中,我不知道如何将Int类型的值转换为mph=kph*0.6214的预期参数类型Double: var mph : Double! var kph : Float! print("KPH MPH") print("------------") for kph in 60.stride(to: 130, by: 10) { mph = kph * 0.6214 print("\(kph) \(mph)") } 如何为编写,以产生所需的结果?对于Dou

在以下代码中,我不知道如何将
Int
类型的值转换为
mph=kph*0.6214
的预期参数类型
Double

var mph : Double!
var kph : Float!

print("KPH    MPH")

print("------------")

for kph in 60.stride(to: 130, by: 10) {
    mph = kph * 0.6214
    print("\(kph)     \(mph)")
}

如何为编写
,以产生所需的结果?

对于Double/Int内容,只需执行Double(Int)*。看起来您还需要使用stride的更新版本。我相信这是正确的:

for kph in stride(from: 60, to: 130, by: 10) {
    mph = Double(kph) * 0.6214
    print("\(kph)     \(mph)")
}

*虽然您似乎还没有决定kph是浮点还是Int,并且输出的kph不是您定义为浮点的kph。如果您的计划是在其他地方使用此值,您可能会遇到麻烦。

只需将初始值声明为literal
Double
(添加
.0


然后编译器将函数的类型推断为
Double
,并隐式转换其他文本。

将kph转换为Double,如下所示:mph=Double(kph)*0.6214请注意,for循环中的kph与顶部的kph是不同的变量,它永远不会被设置。谢谢,@Leo Dabus。你能评论一下下面的答案吗?你认为哪个值得检查?我会和瓦迪安一样回答,所以我会接受他的回答。也没有理由将
kph
声明为
Float在循环之前。与调用Double(:)相比,该方法是否有性能优势?我想,
stride
是一个泛型函数,编译器可以推断出的一切都更可取。@T.Benjamin Larsen,你是否同意Vadian的答案是这个问题的最正确答案?它肯定是最优雅的答案。不过,您无需请求许可即可接受回答:-D(虽然我非常欣赏这个手势,它会很快把这个地方变成垃圾邮件)。@T.本杰明·拉森,你对我的代码进行了出色的批判性分析。我谢谢你,所以我想表示尊重!;)
for kph in 60.0.stride(to: 130, by: 10) {