2017-04-19 64 views
0

我可以/怎麼去調用使用send :name, *args, &blk語法構造的三元運算符?我沒有一個切實的理由來做到這一點,但它出現了。在Ruby中使用`send`調用`?:`

在這裏你可以看到我難過的嘗試:

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:[email protected](irb):3> 

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

'? :'不「綁定」到一個對象,所以'send'不太可能適用於它。其他類似的語法是'if/while/begin'等。 如果在實踐中需要,我們可以使用代理對象。 – Jokester

+1

你好,你考慮過eval/instance_eval嗎? – Bohdan

+0

@Bohdan是的,我想這是最好的解決方案。 –

回答

1

有沒有辦法做到這一點。三元運營商的建設,或其中的一部分,不是一種方法;正如你注意到的那樣,它是一個句法結構。同時,send只能處理方法。

相關問題