people_names = ["Mike", "Tom", "Alison", "Jerry", "Cam"]
people_caps = people_names.each.upcase
# people_caps => ['MIKE', 'TOM', 'ALISON', 'JERRY', 'CAM']
我正在尝试将数组people_names中的每个项目更改为全部大写。 我可以用这样的东西来做:
people_caps = people_names.each {|name| name.upcase!}
但是,它也只是将people_names更改为全部大写,但只有people_caps应该包含全大写字母名称,people_names应该保持不变。
答案 0 :(得分:4)
您的代码也会更改people_names
,因为您在该数组中的所有(upcase!
)元素上调用each
。
如果您只想返回一个新数组而不是更改旧数组,请使用:
people_caps = people_names.map { |name| name.upcase }
或更短:
people_caps = people_names.map(&:upcase)
答案 1 :(得分:1)
people_caps = people_names.map(&:upcase)
答案 2 :(得分:0)
people_caps = people_names.each {|name| name.upcase!}
请勿使用!
你应该明白有什么区别!没有!