修改使用.each迭代的数组元素

时间:2012-10-06 14:09:59

标签: ruby loops

我正在使用.each循环迭代数组。我想改变这个数组中的元素,所以我试过这样的事情:

ex = ["el01", "el02", "el03", "el04"]
ex.each do |el|
    if (el == "el02")
        el = "changed"
    end
end
puts ex

但似乎不起作用!它让我:

el01
el02
el03
el04

我想知道我做错了什么!或者如果不能这样做,怎么做。

3 个答案:

答案 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循环。