我想在循环中读取一些行并将它们连接起来:
d = ""
while s = gets do
d = d.concat(s)
end
puts d
用 CNTRL + Z (在Windows上)取消循环后,输出就是我在循环中读取的最后一个字符串。我也尝试使用+
和<<
但结果相同。
答案 0 :(得分:5)
你可以用两种方式这样做:
d = ""
while s = gets do
d << s
end
puts d
编辑:Marc-AndréLafortune注意到使用+=
并不是一个好主意,所以我只留下<<
方法。
答案 1 :(得分:1)
两种好方法是使用<<
或join
:
d = ""
while s = gets do
d << s
end
puts d
或者
a = []
while s = gets do
a << s
end
puts a.join
您不想做的内容是在第一个示例中使用+=
。想象一下,你的循环迭代200次并返回100个字符长s
。您将构建200个字符串,长度为100,200,300,...,199900,200000。这将是O(n^2)
。