将算术运算符作为参数传递给rails方法?

dod*_*747 3 ruby ruby-on-rails ruby-on-rails-3

是否可以将算术运算符(*,+, - ,/)作为参数传递给ruby方法?我已经看到这在C++中执行.轨道能够类似吗?

def calculate(operator)
   1254 operator 34
end

puts calculate(+)
Run Code Online (Sandbox Code Playgroud)

Luí*_*lho 6

你可以使用一个块,并做类似的事情

def calculate
  yield 1254,34
end
calculate &:+ # => 1288
Run Code Online (Sandbox Code Playgroud)


Pla*_*ure 5

用途Object#send

def calculate(op)
  1254.send(op, 34)
end

puts calculate(:+)
Run Code Online (Sandbox Code Playgroud)

这适用于任何方法,包括定义的算术运算符。请注意,您需要将方法名称作为符号或字符串发送。