在Ruby中反转数组元素极性的简便方法

时间:2011-12-02 17:13:42

标签: ruby arrays

在Ruby中,我有一个数组:

[1, 1, 1, -1, -1, 1, -1, -1] 

我想得到:

[-1, -1, -1, 1, 1, -1, 1, 1]

我确信Ruby有一个简单的单行解决方案,但它现在让我失望了。

3 个答案:

答案 0 :(得分:7)

此外:

[1, 1, 1, -1, -1, 1, -1, -1].map &:-@

答案 1 :(得分:2)

[1, 1, 1, -1, -1, 1, -1, -1].map {|e| -e}

应该这样做。

答案 2 :(得分:1)

[1, 1, 1, -1, -1, 1, -1, -1].map(&-1.method(:*))

解释它的工作原理:

-1.method(:*)

是我对-1对象说“你能告诉我一个方法对象,代表你乘以一个变量吗?”和

map(&...)

是我说“不是给你一个文字块,而是给你一些带有&符号的前缀,就像一个块”。

可以看到method的RDoc文档here