我在swift(2.2)中编写了以下代码:
for var i = 2; sqrt(Double(num)) >= Double(i); i += 1 {.....}
但是,我一直收到一条警告信息,上面写着“c-style for statement已弃用,将在未来版本的swift中删除”。
那么,编写相同循环的正确方法是“Swift风格”?将 num 的值转换为double会给出“Swift样式”错误。有什么建议吗?
谢谢。
答案 0 :(得分:2)
您可以使用 for-in 构造重构弃用的C风格for循环
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) { }
答案 1 :(得分:1)
Swift 2.2中的For循环被重新设计用于迭代序列,例如数字范围,数组中的项或字符串中的字符。 For循环中的条件不容易转换为序列或范围,因此最好将其重写为While循环。