如何在Ruby上反转一个值

时间:2017-04-22 14:17:01

标签: ruby numeric

如果数组中有一组数字,你怎么能将它们反转,使正数为负数,然后为负数。

我已尝试过以下内容,但似乎无法正常工作。

 def invert(list)
  list.each {|x| x * (-1)}
 end

2 个答案:

答案 0 :(得分:11)

这么简单

[1, 5, 7, -3, -47, 0].map { |i| -i }
 => [-1, -5, -7, 3, 47, 0] 

更短。

[1, 5, 7, -3, -47, 0].map(&:-@)
 => [-1, -5, -7, 3, 47, 0]

这是一元减法

答案 1 :(得分:1)

使用map将返回一个新列表,使用map!将修改列表本身

list = [1, 2, 3]
new_list = list.map {|i| -i } 
# list still be [1, 2, 3]
# new list = [-1, -2, -3]
list.map! {|i| -i } 
# list changed to [-1, -2, -3]