Ruby Array方法array.each.uppercase

时间:2014-10-28 02:43:26

标签: ruby arrays

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应该保持不变。

3 个答案:

答案 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!}

这个!将覆盖原始的people_names。

请勿使用!

你应该明白有什么区别!没有!