1. ホーム
  2. ruby

[解決済み] Rubyで反復処理中に配列を変更するには?

2023-03-31 01:05:02

質問

Rubyを勉強し始めたばかりなので、この辺の初心者向けだったら申し訳ないのですが、pickaxeの本を読んでも解決できません(多分、注意深く読んでいないだけだと思いますが)。 とにかく、私がこのような配列を持っている場合。

arr = [1,2,3,4,5]

...そして、私は、例えば、配列の各値を3倍したいのですが、次のようにすることで解決しました。

arr.each {|item| item *= 3}

...は、私が望むものを得ることはできません(そして、私は理由を理解しています、私は配列自体を変更していません)。

私が理解していないのは、イテレータの後のコードブロックの内部から元の配列を変更する方法です。私はこれが非常に簡単であると確信しています。

どのように解決するのですか?

使用方法 map を使って、古い配列から新しい配列を作成します。

arr2 = arr.map {|item| item * 3}

使用方法 map! を使って、その場で配列を変更します。

arr.map! {|item| item * 3}

オンラインで動作確認する アイディーン