2
红宝石变量的运营商有这样漂亮的语法糖,我确信这会工作:商店在使用Ruby
f = :+
g = 1 f 2 // => 3
但是,当然,它没有。
是否有类似的东西?显然有很多简单的方法需要做到这一点,但是Ruby对于神奇糖的承诺是否延伸到做这样的事情?
红宝石变量的运营商有这样漂亮的语法糖,我确信这会工作:商店在使用Ruby
f = :+
g = 1 f 2 // => 3
但是,当然,它没有。
是否有类似的东西?显然有很多简单的方法需要做到这一点,但是Ruby对于神奇糖的承诺是否延伸到做这样的事情?
呀,你可以用Object#public_send
方法,这样做:
f = :+
puts 1.public_send(f, 2) # => 3
从文档:
调用由符号标识的方法,通过它指定的任何参数。与#send不同,#public_send仅调用公共方法。
“它绕过可见性检查” - 这就是为什么你使用'public_send',除非你特别想要规避可视性。 – 2015-02-07 11:08:38
谢谢@JörgWMittag,我不知道这个模拟,更新的答案 – 2015-02-07 15:33:36