//SIEve of Eratosthenes,as seen in WWDC 2015func primes(n: Int) -> [Int] {var numbers = [Int](2..<n)for i in 0..<n-2 { guard let prime = numbers[i] where prime > 0 else { continue } for multiple in strIDe(from: 2 * prime-2,to: n-2,by: prime) { numbers[multiple] = 0 print("\"numbers[i]") } }return numbers.filter {let prime = numbers[i]guard prime > 0 else { continue }> 0 }}
当我在Xcode游乐场中键入它时,我收到以下错误:
Initializer for conditional binding must have Optional type,not ‘Int.’
这是为什么?
解决方法 这里的“问题”是声明保护让prime = numbers [i].编译器抱怨它,因为guard let语法要求numbers [i]是一个可选的,它可以有条件地解包.但它不是可选的,你总是可以从数组中检索第i个Int.修复它只需写
for multiple in (2*prime-2).strIDe(to: n-2,by: 2*prime-2) {
然后正确使用步幅如下(在评论中长时间搜索之后):
print("\(numbers[i])")
然后最后一块是改变印刷品:
总结以上是内存溢出为你收集整理的ios – guard在swift 2.0 playground中获取有关可选绑定的错误…为什么?全部内容,希望文章能够帮你解决ios – guard在swift 2.0 playground中获取有关可选绑定的错误…为什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)