我正在尝试有条件地映射我拥有的数组:
看起来像 [ "a", "b", "c" ] 的数组
我想将它内联映射(使用映射!)以更改匹配 /b/ 的任何内容并将其更改为“bb”。但这似乎不起作用,它似乎并没有改变数组。
我希望它看起来像这样 [ "a", "bb", "c" ]
定义数组:
irb(main):001:0> a = [ "a", "b", "c" ]
=> ["a", "b", "c"]
尝试使用链接到地图的选择!它显示了一个元素的更改值,并且没有更改原始数组。
irb(main):002:0> a.select { |e| e =~ /b/ }.map! { |e| e = "bb" }
=> ["bb"]
irb(main):003:0> p a.inspect
"[\"a\", \"b\", \"c\"]"
所以我尝试做同样的事情,但是将它分配给一个新数组,这只会创建一个包含任何更改元素的数组 - 而不是我想要的
irb(main):004:0> cc = a.select { |e| e =~ /b/ }.map! { |e| e = "bb" }
=> ["bb"]
irb(main):005:0> p cc.inspect
"[\"bb\"]"
=> nil
我在这里想念什么?我认为我在这里缺少一些 Ruby 基础知识。