2016-05-18 91 views
1

我写在迅速以下代码(2.2):正确的SWIFT 2.2语法与循环

for var i = 2; sqrt(Double(num)) >= Double(i); i += 1 {.....} 

不过,我不断收到读取“C风格的声明已过时,将被删除的警告消息在未来版本的迅速“。

那么,编写相同循环的正确方法是“Swift样式”?铸造值为num as double给了我错误与“斯威夫特风格”。有什么建议么?

谢谢。

回答

2

可以重构弃用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) { } 
+0

谢谢。这解决了这个问题。 –

1

Swift 2.2中的For循环重新设计用于迭代序列,如数字的范围,数组中的项或字符串中的字符。 For循环中的条件不容易转换为序列或范围,因此最好将其重新编写为While循环。

+0

大观察,由于近期雨燕3.x的更新.. –

+4

“你的条件回路不容易转化成序列或范围“ - @appzYourLife回答上面说的不然;) –