我希望以编程方式应用一个典型的中缀操作(例如:+
,-
,*
,/
),其中操作通过字符串指定。我已经成功地使用.method
访问了方法本身
这是一个有效的模式,1.+(2)
正确地解析为3
通过扩展,我需要定义一种方法,可以为操作符接受一个变量字符串,如下所示:1 + 2
作为1.method('+')(2)
上面的代码导致了一个语法错误,虽然直到以这种方式检索方法时,我还不确定传递第二个整数参数需要什么语法。例如:
1.method('+') # <Method: Integer#+(_)>
1.method('+') 2 # syntax error, unexpected integer literal, expecting end-of-input
1.method('+')(2) # syntax error, unexpected '(', expecting end-of-input
以这种方式执行1 + 2
操作的正确语法是什么?
我正在使用:ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
2条答案
按热度按时间ds97pgxw1#
Method
类有几个自己的示例方法。你要找的是call
它也别名为
[]
和===
ecbunoof2#
method
为创建方法对象增加了一些开销。您可以使用
public_send
来以编程方式向对象发送消息:名称/操作符可以作为字符串或符号给出,即
'+'
或:+
。