次のコードを実行すると:
range = [2,3,4,5,6,7,8,9,10]
range.each {|z| print z, " "}
puts "\n"
range.map! {|y| y /= 3 if y % 3 == 0}
range.each {|z| print z, " "}
次の出力が得られます。
2 3 4 5 6 7 8 9 10
nil 1 nil nil 2 nil nil 3 nil
出力の 2 行目に次の内容が含まれていることを期待していますが、
2 1 4 5 2 7 8 3 10
私は何を間違っていますか?map
オペレーターの方法と、それに関連付けられたコード ブロックがどのように機能するかを誤解していますか?
注: 私は何年にもわたって C/C++ で大規模なプログラミングを行った後、Ruby を学んでいます。これは、私が行き詰っていた動作しない Ruby プログラムの最小のスニペットです。必要に応じて、元のプログラムを貼り付けることができます。その中から、この MWE も構築しました。