我怎样才能大写数组的每个元素?

Mic*_*ant 24 ruby arrays

如何将元素数组转换为大写?预期产出将是:

["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]  
=> ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"]
Run Code Online (Sandbox Code Playgroud)

以下不起作用,并将它们作为小写.

Day.weekday.map(&:name).each {|the_day| the_day.upcase }
 => ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] 
Run Code Online (Sandbox Code Playgroud)

Tod*_*obs 60

返回一个新数组

如果要返回大写数组,请使用#map:

array = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]

# Return the uppercased version.
array.map(&:upcase)
=> ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"]

# Return the original, unmodified array.
array
=> ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
Run Code Online (Sandbox Code Playgroud)

如您所见,原始数组未被修改,但您可以在任何可以使用表达式的地方使用#map的大写返回值.

正确更新阵列

如果要在适当的位置大写数组,请使用#map!代替:

array = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
array.map!(&:upcase)
array
=> ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY"]
Run Code Online (Sandbox Code Playgroud)


Ser*_*sev 6

这应该工作:

Day.weekday.map(&:name).map(&:upcase)
Run Code Online (Sandbox Code Playgroud)

或者,如果您想节省一些CPU周期

Day.weekday.map{|wd| wd.name.upcase}
Run Code Online (Sandbox Code Playgroud)