In Ruby, den Zustand und die then
Teil eines if
Ausdruck muss entweder durch einen Ausdruckseparator (dh ;
oder einen Zeilenumbruch) oder das then
Schlüsselwort getrennt werden.
So würden alle diese funktionieren:
if @item.rigged then 'Yes' else 'No' end
if @item.rigged; 'Yes' else 'No' end
if @item.rigged
'Yes' else 'No' end
Es gibt auch einen bedingten Operator in Ruby, aber das ist völlig unnötig. Der Bedingungsoperator wird in C benötigt, da es ein Operator ist: in C ist if
eine Anweisung und kann daher keinen Wert zurückgeben. Wenn Sie also einen Wert zurückgeben möchten, müssen Sie einen Wert verwenden, der zurückgeben kann. Und die einzigen Dinge in C, die einen Wert zurückgeben können, sind Funktionen und Operatoren, und da es unmöglich ist, if
eine Funktion in C zu machen, brauchen Sie einen Operator. In Ruby ist if
ein Ausdruck. In der Tat, alles ist ein Ausdruck in Ruby, so dass bereits kann einen Wert zurückgeben. Es besteht keine Notwendigkeit für den bedingten Operator, selbst existieren, geschweige denn es zu benutzen.
BTW: Es ist üblich, Namen Methoden, die verwendet werden am Ende eine Frage mit einem Fragezeichen fragen, wie folgt aus:
@item.rigged?
Dies ein anderes Problem zeigt mit dem bedingten Operator in Ruby mit:
@item.rigged? ? 'Yes' : 'No'
Es ist einfach schwer zu lesen mit den vielen Fragezeichen, die nahe beieinander liegen.
Ich bin schon unzählige Male auf diese Antwort für die Syntax zurückgekommen ... Danke! –
Wenn Ihre Bedingung in einem '?' Endet Ist es möglich, es fallen zu lassen? Dh wenn die Bedingung @ customer.sales.present ist? kannst du das '?' ... mach dir keine Sorgen. Habe einen Code gefunden und getestet. Die Antwort lautet "Nein" –
@JayKilleen Sie haben Recht. Ruby dreht sich alles um clevere Tricks, aber es ist _that_ clever (: –