我正在使用.each循环迭代数组。我想改变这个数组中的元素,所以我试过这样的事情:
ex = ["el01", "el02", "el03", "el04"]
ex.each do |el|
if (el == "el02")
el = "changed"
end
end
puts ex
但似乎不起作用!它让我:
el01
el02
el03
el04
我想知道我做错了什么!或者如果不能这样做,怎么做。
答案 0 :(得分:2)
您应该使用each
:
ex = ["el01", "el02", "el03", "el04"]
ex.each do |str|
# do with str, e.g., printing each element:
puts str
end
建议不要在Ruby中使用for
,因为它只调用each
并且不会引入新范围。
但是,如果您的意图是更改数组中的每个元素,则应使用map
:
ex = ["el01", "el02", "el03", "el04"]
ex.map do |str|
str.upcase
end
#=> ["EL01", "EL02", "EL03", "EL04"]
答案 1 :(得分:1)
你可以这样做:
for item in ex
#do something with the item here
puts item
end
更为Ruby惯用的方法是:
ex.each do |item|
#do something with the item here
puts item
end
或者,您可以在一行中完成:
ex.each {|item| puts item}
答案 2 :(得分:0)
ruby方式是使用列表的#each
方法。其他几个类也有#each
,就像Ranges一样。因此,你几乎不会在ruby中看到for循环。