Swift报错Variable 'str' used before being initialized 倒计时函数实现问题
错误原因
- Swift 为保证类型安全,强制要求所有变量在使用前必须完成初始化。你仅声明了
str的类型为String,没有给它赋初始值,编译器无法确认该变量在返回前一定能被赋值:如果传入的参数是负数,while循环的判断条件一开始就不成立,代码会直接走到return str的逻辑,此时str处于未初始化的状态,因此会抛出该错误。 - 除此之外你现有的逻辑也不符合功能要求:循环内每次都会用新的数字覆盖
str的值,最终返回的只会是最后一次赋值的"0",不是全部数字用空格分隔的完整字符串。
修复方案
func countDown(_ number: Int) -> String { var n = number // 初始化空字符串用来拼接结果 var str = "" while n >= 0 { let numStr = String(n) // 拼接当前数字和分隔空格 str += numStr + " " print(numStr, terminator: " ") n -= 1 } // 去掉末尾多余的空格后返回 return str.trimmingCharacters(in: .whitespaces) } var numbersAsString: String = countDown(5) // 可打印返回值验证结果 print("\n返回的字符串为:\(numbersAsString)")
内容的提问来源于stack exchange,提问作者user14508629
相关产品推荐
相关产品推荐

