Ruby で、特定の要素が変更され、他の要素は変更されないような方法で配列をマッピングする最も表現力豊かな方法は何ですか?
これは簡単な方法です。
old_a = ["a", "b", "c"] # ["a", "b", "c"]
new_a = old_a.map { |x| (x=="b" ? x+"!" : x) } # ["a", "b!", "c"]
もちろん、十分でない場合は「放置」のケースを省略します。
new_a = old_a.map { |x| x+"!" if x=="b" } # [nil, "b!", nil]
私が欲しいのは次のようなものです:
new_a = old_a.map_modifying_only_elements_where (Proc.new {|x| x == "b"})
do |y|
y + "!"
end
# ["a", "b!", "c"]
Ruby でこれを行う良い方法はありますか (または、Rails には私がまだ見つけていない便利な方法があるのでしょうか)。
返信ありがとうございます。map
三項演算子を使用するのが最善であるとまとめて確信させてくれましたが、非常に興味深い回答を投稿した人もいました。