【问题标题】:Store an operator in a variable with Ruby使用 Ruby 将运算符存储在变量中
【发布时间】:2015-02-07 03:46:42
【问题描述】:

Ruby 有如此漂亮的语法糖,我确信这会起作用:

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

但是,当然不是。

有没有类似的?显然有很多简单的方法可以解决这个问题,但是 Ruby 对神奇糖的承诺是否延伸到做这样的事情?

【问题讨论】:

    标签: ruby operators


    【解决方案1】:

    是的,您可以使用Object#public_send 方法:

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

    来自文档:

    调用由符号标识的方法,将任何指定的参数传递给它。与#send 不同,#public_send 仅调用公共方法。

    【讨论】:

    • “它绕过了可见性检查”——这就是你使用 public_send 的原因,除非你特别想绕过可见性。
    • 谢谢@JörgWMittag,我不知道这个类似的更新答案
    猜你喜欢
    • 2012-12-24
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 2013-08-13
    • 2021-08-11
    • 1970-01-01
    相关资源
    最近更新 更多