En règle générale: vous avez à peu près jamais besoin de l'opérateur ternaire en Ruby. La raison pour laquelle vous en avez besoin dans C, est parce que dans C if
est une instruction, donc si vous voulez retourner une valeur que vous avez à utiliser l'opérateur ternaire, qui est une expression.
En Ruby, tout est une expression, il n'y sont pas consolidés, ce qui rend l'opérateur ternaire assez bien superflu. Vous pouvez toujours les remplacer
cond ? then_branch : else_branch
avec
if cond then then_branch else else_branch end
Donc, dans votre exemple:
object.method ? a.action : nil
est équivalent à
if object.method then a.action end
qui comme @Greg Campbell souligne à son tour, l'équivalent de la fuite if
modificateur de forme
a.action if object.method
Aussi, depuis les opérateurs booléens dans Ruby pas juste retour true
ou false
, mais la valeur de la dernière expression évaluée, vous pouvez les utiliser pour le contrôle de flux. C'est un idiome importés de Perl, et devrait ressembler à ceci:
object.method and a.action