2013-11-24 49 views
3

我想在ruby中改變一個數組。通常我會做Ruby向Array#發送方法地圖

[1,2,3].map{|i| i*3} 

不過,我想用送樣我會使用to_s

[1,2,3].map &:to_s 

我試試這個:

[1,2,3].map &:send(:*, 3) 

但它返回一個錯誤

SyntaxError: unexpected '(', expecting $end 
[1, 2, 3].map &:send(:*, 3) 

我該怎麼去布特發送此塊映射,而無需使用{}

+0

它沒有意義。符號不需要參數。 – sawa

+0

儘管'a = [1,2,3] a.map(&3.method(:*))#=> [3,6,9]''''''''''''不需要'#send' .. –

回答

6

在這種特殊情況下,可以利用以下事實:乘法(或至少應該是)對稱的,即a*b == b*a

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