Puis-je/comment appeler l'opérateur ternaire en utilisant la construction syntaxique send :name, *args, &blk
? Je n'ai pas de raison pratique de le faire, mais c'est arrivé.Invoquer `?:` Using `send` dans Ruby
Ici vous pouvez voir mes tentatives lamentables:
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
'? : 'ne" lie "pas à un objet, donc' send' est moins susceptible de fonctionner avec lui. D'autres syntaxes similaires sont 'if/while/begin' etc. Dans le cas où cela est nécessaire en pratique, nous pourrions utiliser un objet proxy. – Jokester
Bonjour avez-vous considéré eval/instance_eval? – Bohdan
@Bohdan oui je suppose que c'est la meilleure solution. –