提问人:MolarFox 提问时间:6/2/2023 更新时间:6/2/2023 访问量:49
如何在 Ruby 中使用“method”而不是其中缀形式的整数方法
How to use integer methods using `method`, not their infix form, in Ruby
问:
我希望以编程方式在两个整数上应用一个典型的不固定运算(例如:、),其中操作是通过字符串指定的。我已经成功地使用.method
访问了该方法本身+
-
*
/
这是一种有效的模式,可以正确解析为1.+(2)
3
通过扩展,我将定义一种可以为运算符获取变量字符串的方法,如下所示:as1 + 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]
答:
3赞
Siim Liiser
6/2/2023
#1
该类有自己的几个实例方法。您在这里要查找的是电话
Method
它也别名为 和[]
===
1.method('+').call(2) #=> 3
1.method('+')[2] #=> 3
1.method('+') === 2 #=> 3
评论
4赞
3limin4t0r
6/2/2023
另一种选择是哪个是句法糖1.method('+').(2)
1.method('+').call(2)
3赞
Stefan
6/2/2023
#2
method
增加创建方法对象的一些开销。
您可以改用 public_send
以编程方式向对象发送消息:
1.public_send('+', 2)
#=> 3
名称/运算符可以作为字符串或符号给出,即 或。'+'
:+
评论