Ruby发送方法到Array #map

Adr*_*n M 4 ruby ruby-on-rails

我想在ruby中改变一个数组.通常我会这样做

[1,2,3].map{|i| i*3}
Run Code Online (Sandbox Code Playgroud)

但是我想使用像我使用的发送to_s:

[1,2,3].map &:to_s
Run Code Online (Sandbox Code Playgroud)

我试试这个:

[1,2,3].map &:send(:*, 3)
Run Code Online (Sandbox Code Playgroud)

但它返回一个错误

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

如何在不使用的情况下将此块发送到地图 {}

Jör*_*tag 6

在这种特殊情况下,您可以利用乘法是(或至少应该)对称的事实,即a*b == b*a:

[1, 2, 3].map(&3.method(:*))
Run Code Online (Sandbox Code Playgroud)