gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:50:09 25 4
gpt4 key购买 nike

这是我所拥有的:
operator = '>'
这是我尝试过的:

5 operator.to_sym 4

#invalid result =>
5 :>= 4

预期 : 5 > 4

最佳答案

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

operator = :>
5.public_send(operator, 4)
# true
public_send (如 send )可以接收作为字符串或符号的方法。

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

你也可以做 receiver.method(method_name).call(argument) ,但这只是更多的输入:
5.method(operator).call(4)
# true

感谢@tadman 的基准比较 sendmethod(...).call :
require 'benchmark'

Benchmark.bm do |bm|
repeat = 10000000

bm.report('send') { repeat.times { 5.send(:>, 2) } }
bm.report('method.call') { repeat.times { 5.method(:>).call(2) } }
end

# user system total real
# send 0.640115 0.000992 0.641107 ( 0.642627)
# method.call 2.629482 0.007149 2.636631 ( 2.644439)

关于ruby - 如何在ruby中将运算符作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58398293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com