如何在Ruby中将运算符作为参数传递?

Pra*_*ams 3 ruby

这是我所拥有的:

operator = '>'

这是我尝试过的:

5 operator.to_sym 4

#invalid result => 
5 :>= 4 
Run Code Online (Sandbox Code Playgroud)

预期5 > 4

Seb*_*lma 8

您可以使用public_send或(send取决于方法):

operator = :>
5.public_send(operator, 4)
# true
Run Code Online (Sandbox Code Playgroud)

public_send(as send)可以接收String或Symbol的方法。

如果您使用的方法未在对象类中定义,则Ruby将引发一个NoMethodError


您也可以这样做receiver.method(method_name).call(argument),但这只是更多输入:

5.method(operator).call(4)
# true
Run Code Online (Sandbox Code Playgroud)