You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 14:24:18