Swift全局函数为何出现‘for循环预期返回却缺失返回值’错误?
错误原因解析
你遇到的错误核心是Swift编译器判定函数存在无返回值的代码路径,具体原因如下:
- 虽然你在
for循环的if/else分支里都写了return,但编译器不会去分析1...100这个范围是否一定非空,它只会从语法规则层面判断:如果循环体完全没执行(比如极端情况下范围是空集合),函数就会走到代码末尾,没有任何返回值,这违反了函数声明-> Int必须返回整数的要求。 - 顺便提一句(你说函数本身不重要,但还是说下):你的代码逻辑里,
for循环第一次迭代就会触发return,根本不会遍历1到100的所有数,这和你想要的逻辑不符,但这不是编译器报错的原因。
如果要修复这个编译错误,只需要在循环结束后加一个默认的返回语句,让所有代码路径都有返回值,比如:
func testNumber(number: Int) throws -> Int { for i in 1...100 { let x: Int = i * i if x == number { return x } } // 循环结束未找到匹配值时返回默认值 return 0 }
内容的提问来源于stack exchange,提问作者user2649533
相关产品推荐
相关产品推荐

