在 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
只能处理方法。
我可以/我将如何使用 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
只能处理方法。