这是我所拥有的:
operator = '>'
这是我尝试过的:
5 operator.to_sym 4
#invalid result =>
5 :>= 4
Run Code Online (Sandbox Code Playgroud)
预期:
5 > 4
您可以使用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)