0

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

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

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

el01
el02
el03
el04

我想知道我做错了什么!或者如果不能以这种方式完成,该怎么做。

4

3 回答 3

2

你应该使用each

ex = ["el01", "el02", "el03", "el04"]
ex.each do |str|
  # do with str, e.g., printing each element:
  puts str
end

for不推荐在 Ruby 中使用,因为它只是调用并且each不会引入新的作用域。

但是,如果您的意图是更改数组中的每个元素,则应使用map

ex = ["el01", "el02", "el03", "el04"]
ex.map do |str|
  str.upcase
end
#=> ["EL01", "EL02", "EL03", "EL04"]
于 2012-10-06T14:13:57.967 回答
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}
于 2012-10-06T14:12:36.123 回答
0

ruby 方法是使用#each列表的方法。其他几个类也有#each,比如 Ranges。因此,您几乎不会在 ruby​​ 中看到 for 循环。

于 2012-10-06T14:15:53.070 回答