首页 > 解决方案 > Ruby:如何为数组的加法逆生成方法

问题描述

我正在尝试创建一种方法,当您将数组传递给它时,会创建一个新数组,该数组是其加法逆(EX:[1,2,3,4] =>(加法逆)[-1,-2 ,-3,-4]。我尝试过包含 Enumerable 以及放置 .each。我也摆脱了 .map,然后我留下了未定义的方法“x”。我已经使用了多个代码次以及研究了几个站点,了解如何在数组中的每个元素传递给方法时对其进行操作。我最接近的是:

def add_inv (x) 

  arr_new = x.map {|e| -e}
  puts arr_new

end

add_inv([5,-7,8,3])

输出:

-5
7
-8
-3

我正在寻找数组形式的输出。期望的输出:[-5, 7, -8, -3]

提前感谢您的积极反馈和批评。(Ruby 新手)

编辑:12:29 - 2020 年 4 月 13 日在进一步使用代码和下面的一些建议时,我能够使用以下代码操作数组,并将继续努力提出一种允许您传递的方法数组作为参数,然后将其转换为逆数组。这是给我所需输出的代码(尽管仍然不是方法)。

b = Array.new ([5,-7,8,3].map{|v| v*(-1)})

p b

输出:[-5,7,-8,-3]

一旦我弄清楚如何用一种方法做到这一点,就会更新。

标签: ruby

解决方案


抱歉,第一次误解了您的问题,这里的问题是puts当您尝试显示它们时会处理不同的数组,然后您可以使用porprint做您想做的事情,这里是示例

def add_inv_with_puts(x) 
  puts x.map {|e| -e}
end
add_inv_with_puts([5,-7,8,3])

def add_inv_with_p(x) 
  p x.map {|e| -e}
end
add_inv_with_p([5,-7,8,3])

def add_inv_with_print(x) 
  print x.map {|e| -e}
end
add_inv_with_print([5,-7,8,3])

推荐阅读