抱歉这个模糊的问题.我无法用言语来描述这种现象,因此谷歌没有多大帮助.请考虑以下代码:
array = [["name", "age"]]
a = []
x = ["Joe 32",
"Tom 45",
"Jim 36"]
x.each do |line|
name, age = line.split(/\s/)
a[0] = name
a[1] = age
array.push(a)
end
array.each do |x|
puts x.join(" ")
end
Run Code Online (Sandbox Code Playgroud)
这会产生:
name age
Jim 36
Jim 36
Jim 36
Run Code Online (Sandbox Code Playgroud)
这与我的期望相反:
name age
Joe 32
Tom 45
Jim 36
Run Code Online (Sandbox Code Playgroud)
array事后通过修改为什么会受到影响a?
你想在里面设置a一个新的Array对象each.此刻,您将同一个 a对象推送到数组,这就是它返回相同值三次的原因.更好的是根本不使用a,而是将代码转换为这样的代码:
x.each do |line|
name, age = line.split(/\s/)
array.push([name, age])
end
Run Code Online (Sandbox Code Playgroud)
你甚至可以通过移动line.split到push方法内部来使它小于它,但我认为这会降低可读性并且不能解释你从中得到的信息split.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |