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

Rubyでの使用forは、単に呼び出すだけで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

または、1行で実行できます。

ex.each {|item| puts item}
于 2012-10-06T14:12:36.123 に答える
0

ルビーの方法は#each、リストの方法を使用することです。#eachまた、Rangesのように、他のいくつかのクラスにもあります。したがって、rubyでforループが表示されることはほとんどありません。

于 2012-10-06T14:15:53.070 に答える