使用Ruby将操作符存储在变量中

时间:2015-02-07 03:46:42

标签: ruby operators

Ruby有如此美妙的语法糖,我相信这会起作用:

f = :+
g = 1 f 2 // => 3

但是,当然,它没有。

有类似的东西吗?显然,有很多简单的方法可以解决这个问题,但Ruby对这种惊人的糖的承诺是否会延伸到做这样的事情?

1 个答案:

答案 0 :(得分:3)

是的,您可以使用Object#public_send方法执行此操作:

f = :+
puts 1.public_send(f, 2) # => 3

来自docs:

  

调用symbol标识的方法,并将指定的参数传递给它。与#send不同,#public_send仅调用公共方法。