在 Ruby 中使用 `send` 调用 `?:`

Invoke `?:` using `send` in Ruby

我可以/我将如何使用 send :name, *args, &blk 语法构造来调用三元运算符?我没有这样做的实际理由,但它出现了。

在这里你可以看到我糟糕的尝试:

i = 7

send "?:", proc { i > 2 }, true, false
# => NoMethodError: undefined method `?:' for main:Object

proc { i > 2 }.send "?:", true, false
# => NoMethodError: undefined method `?:' for #<Proc:0x00000001ef77b0@(irb):3>

proc { i > 2 }.call.send "?:", true, false
# => NoMethodError: undefined method `?:' for true:TrueClass

没有办法做到这一点。三元运算符构造或其中的 ? 部分不是方法;正如您所注意到的,它是一个句法结构。同时,send只能处理方法。