我正在使用 .each 循环遍历数组。我想改变这个数组中的元素,所以我尝试了这样的事情:
ex = ["el01", "el02", "el03", "el04"]
ex.each do |el|
if (el == "el02")
el = "changed"
end
end
puts ex
但它似乎不起作用!它让我:
el01
el02
el03
el04
我想知道我做错了什么!或者如果不能以这种方式完成,该怎么做。
你应该使用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"]
你可以这样做:
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}
ruby 方法是使用#each
列表的方法。其他几个类也有#each
,比如 Ranges。因此,您几乎不会在 ruby 中看到 for 循环。