使用 Ruby 将运算符存储在变量中
Store an operator in a variable with Ruby
Ruby 有如此漂亮的语法糖,我确信这会起作用:
f = :+
g = 1 f 2 // => 3
但是,当然不是。
有类似的吗?显然有很多简单的方法可以解决这个问题,但是 Ruby 对神奇糖的承诺是否延伸到做这样的事情?
是的,您可以使用 Object#public_send
方法:
f = :+
puts 1.public_send(f, 2) # => 3
来自文档:
Invokes the method identified by symbol, passing it any arguments specified. Unlike #send, #public_send calls public methods only.
Ruby 有如此漂亮的语法糖,我确信这会起作用:
f = :+
g = 1 f 2 // => 3
但是,当然不是。
有类似的吗?显然有很多简单的方法可以解决这个问题,但是 Ruby 对神奇糖的承诺是否延伸到做这样的事情?
是的,您可以使用 Object#public_send
方法:
f = :+
puts 1.public_send(f, 2) # => 3
来自文档:
Invokes the method identified by symbol, passing it any arguments specified. Unlike #send, #public_send calls public methods only.