我写在迅速以下代码(2.2):正确的SWIFT 2.2语法与循环
for var i = 2; sqrt(Double(num)) >= Double(i); i += 1 {.....}
不过,我不断收到读取“C风格的声明已过时,将被删除的警告消息在未来版本的迅速“。
那么,编写相同循环的正确方法是“Swift样式”?铸造值为num as double给了我错误与“斯威夫特风格”。有什么建议么?
谢谢。
我写在迅速以下代码(2.2):正确的SWIFT 2.2语法与循环
for var i = 2; sqrt(Double(num)) >= Double(i); i += 1 {.....}
不过,我不断收到读取“C风格的声明已过时,将被删除的警告消息在未来版本的迅速“。
那么,编写相同循环的正确方法是“Swift样式”?铸造值为num as double给了我错误与“斯威夫特风格”。有什么建议么?
谢谢。
可以重构弃用C风格的使用环路,在构建
for i in 2...Int(sqrt(Double(num))) { }
但是,如果你真的想要去必不可少尝试定义这个操作符找到square root of an int rounded down to the closest int
。
prefix operator √ {}
prefix func √ (number: Int) -> Int {
return Int(sqrt(Double(number)))
}
现在你可以写你的for循环这样
for i in 2...(√num) { }
Swift 2.2中的For循环重新设计用于迭代序列,如数字的范围,数组中的项或字符串中的字符。 For循环中的条件不容易转换为序列或范围,因此最好将其重新编写为While循环。
大观察,由于近期雨燕3.x的更新.. –
“你的条件回路不容易转化成序列或范围“ - @appzYourLife回答上面说的不然;) –
谢谢。这解决了这个问题。 –