0

我想在循环中读取一些行并将它们连接起来:

d = ""
while s = gets do
  d = d.concat(s)
end
puts d

CNTRL在我用+取消循环后Z(在 Windows 上),输出只是我在循环中读取的最后一个字符串。我也尝试过+<<但结果相同。

4

2 回答 2

5

您可以通过以下两种方式进行操作:

d = ""
while s = gets do
  d << s
end
puts d

编辑:Marc-André Lafortune 注意到 using+=不是一个好主意,所以我<<在这里只留下方法。

于 2013-05-09T17:02:36.020 回答
1

两种好方法是使用<<or join

d = ""
while s = gets do
  d << s
end
puts d

或者

a = []
while s = gets do
  a << s
end
puts a.join

不想做的是+=在第一个示例中使用。想象一下,您的循环迭代 200 次并返回 100 character-long s。您将构建 200 个字符串,长度分别为 100、200、300、...、199900、200000。那将是O(n^2).

于 2013-05-09T21:34:55.883 回答