ios – guard在swift 2.0 playground中获取有关可选绑定的错误…
发布时间:2020-12-14 19:17:25 所属栏目:百科 来源:网络整理
导读:我正在观看 this video.在9:40左右,屏幕上有一些示例代码,如下面的代码所示: //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 {
我正在观看
this video.在9:40左右,屏幕上有一些示例代码,如下面的代码所示:
//Sieve of Eratosthenes,as seen in WWDC 2015 func 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 { $0 > 0 } } 当我在Xcode游乐场中键入它时,我收到以下错误:
这是为什么? 解决方法
这里的“问题”是声明保护让prime = numbers [i].编译器抱怨它,因为guard let语法要求numbers [i]是一个可选的,它可以有条件地解包.但它不是可选的,你总是可以从数组中检索第i个Int.
修复它只需写 let prime = numbers[i] guard prime > 0 else { continue } 然后正确使用步幅如下(在评论中长时间搜索之后): for multiple in (2*prime-2).stride(to: n-2,by: 2*prime-2) { 然后最后一块是改变印刷品: print("(numbers[i])") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |