如何使用readLine()读取未知数量的输入行?
读取未知行数输入的Swift代码问题
我不确定用户会输入多少行字符串,尝试了以下Swift代码但未能实现需求:
var commands = [String]() for _ in 0..<Int(pow(Double(5), Double(5))) { if let readLine = readLine() { commands.append(readLine) } else { break } } print(commands) // 即使输入25行,这条语句也无法执行
问题原因
这段代码的循环次数是5^5=3125次,就算输入25行后,程序仍会持续等待剩余3100次的输入(readLine()会阻塞直到获取输入或遇到EOF),因此永远走不到print语句。
正确实现
改用while循环持续读取输入,直到遇到EOF(比如输入时按下Ctrl+D):
var commands = [String]() while let line = readLine() { commands.append(line) } print("commands = \(commands)")
效果验证
示例1:
输入:
asd asdasd 123
输出:
commands = ["asd", "asdasd", "123"]
示例2:
输入:
asd asdasd asdasdasd 123 asd
输出:
commands = ["asd", "asdasd", "asdasdasd", "123", "asd"]
内容的提问来源于stack exchange,提问作者Klim Postironin
相关产品推荐
相关产品推荐

