在 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
与三元运算符一起使用,但你们中的一些人发布了非常有趣的答案!