In der Regel: Sie benötigen den ternären Operator in Ruby so gut wie nie. Der Grund , warum Sie es in C benötigen, liegt daran , dass in C ist if
eine Aussage, wenn Sie also einen Wert , den Sie zurückkehren wollen haben den ternären Operator zu verwenden, was ein Ausdruck ist.
In Ruby ist alles ein Ausdruck, es gibt keine Anweisungen, was den ternären Operator ziemlich überflüssig macht. Sie können jederzeit ersetzen
cond ? then_branch : else_branch
mit
if cond then then_branch else else_branch end
Also, in Ihrem Beispiel:
object.method ? a.action : nil
ist äquivalent zu
if object.method then a.action end
was, wie @Greg Campbell betont, wiederum der nachfolgenden if
Modifikatorform entspricht
a.action if object.method
Da die booleschen Operatoren in Ruby nicht nur true
oder false
, sondern den Wert des zuletzt ausgewerteten Ausdrucks zurückgeben, können Sie sie auch für den Steuerungsfluss verwenden. Dies ist eine aus Perl importierte Redewendung, die folgendermaßen aussehen würde:
object.method and a.action