Wie schreibe ich 'if' ohne 'then' oder 'end' in Ruby zu verwenden

8

Ich habe drei Möglichkeiten gefunden, die gleiche Bedingung in Ruby zu schreiben:

%Vor%

Warum kann ich das nicht tun?

%Vor%

Ich verstehe nicht:

  1. Warum dann und end in # 3 und
  2. benötigt werden
  3. Warum muss ich die Reihenfolge ändern, damit # 2 funktioniert?

Aussage Nr. 4 scheint die natürlichste Art zu sein, dies zu schreiben. Ich verstehe nicht, warum das nicht möglich ist.

    
Mohsen Nosratinia 10.03.2009, 16:42
quelle

3 Antworten

19

Die Syntax " if x then y end " ist für mehrzeilige Bedingungen gedacht, während das Formular " y if x " für prägnante einzeilige bedingte Anweisungen gedacht ist. Der then ist im ersten Fall notwendig, um Ruby mitzuteilen, dass die Bedingung vorüber ist (da Ruby keine Parens wie C benötigt), und% code_de ist notwendig, um Ruby mitzuteilen, dass der gesamte end -Block abgelaufen ist ( da es mehrere Zeilen sein kann).

Sie können if durch ein Semikolon ersetzen, da ein Zeilenende auch das Ende der Bedingung signalisiert. Sie können die then nicht mit einer mehrzeiligen end loswerden. Verwenden Sie entweder das zweite Formular oder den Ternäroperator, wenn Sie einen übersichtlichen Einzeiler wünschen.

Beispiel:

%Vor%

Folgendes wird als wahr ausgewertet und gibt y zurück

%Vor%

ebenfalls wird dies falsch auswerten und nichts zurückgeben

%Vor%

fügen Sie einen Ausdruck nach dem ':' für den else-Fall hinzu

%Vor%     
Chuck 10.03.2009, 18:10
quelle
4

Die Sache ist, dass beide Wege tatsächlich eine natürliche Art zu denken sind:

Wenn das stimmt, dann tu etwas

tue etwas, wenn das wahr ist

Siehe? Ruby versucht, auf diese Weise der englischen Syntax nahe zu kommen. Das Ende ist nur notwendig, um den Block zu beenden, während in der zweiten Version der Block bereits mit if geschlossen ist.

Um Ihre Frage tatsächlich zu beantworten, denke ich, dass es keine Möglichkeit gibt, das dann und Ende zu entfernen. Erinnerst du dich an Pascal / Delphi? Sie haben dort auch ein dann . Es ist typisch nur für Sprachen im C-Stil, es nicht zu haben.

    
OregonGhost 10.03.2009 16:47
quelle
0

Wie wäre es stattdessen mit einem Doppelpunkt? Ссылка

Es gibt verschiedene Möglichkeiten, wie Sie einen Kurzschluss machen könnten, wenn Sie das möchten.

Die bedingte Anweisung ist nur ein Teil der Ruby-Syntax, um sie englischer zu machen.

    
Jared Knipp 10.03.2009 16:52
quelle

Tags und Links