Alle Originalinhalte werden auf Ukrainisch erstellt. Noch nicht alle Inhalte wurden übersetzt. Einige Beiträge sind möglicherweise nur auf Ukrainisch verfügbar.Mehr erfahren

Warum gibt der Ruby-Code nil zurück, nachdem puts ausgeführt wurde?

Beitrags-Cover: Warum gibt der Ruby-Code nil zurück, nachdem puts ausgeführt wurde?
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
In Ruby gibt die Methode puts immer nil zurück, nachdem sie eine Zeichenkette auf dem Bildschirm ausgegeben hat. Dies ist das Standardverhalten von puts, da ihr Hauptzweck darin besteht, Text auszugeben und nicht einen Wert zurückzugeben. Mit anderen Worten, puts ist eine Methode, die für die Ausgabe bestimmt ist, und ihre Nebenwirkung (die Textausgabe) ist wichtiger als der zurückgegebene Wert.
result = puts "Hallo, Welt!"
Hallo, Welt!
=> nil
Wenn Sie den Code "puts 'Hallo, Welt!'" ausführen, gibt irb "Hallo, Welt!" auf dem Bildschirm aus und gibt nil zurück. Daher wird die Variable result den Wert nil haben.
result
=> nil
Warum ist das so?
Die Methode puts ist dafür gedacht, Daten in den Standardausgabestrom (normalerweise die Konsole) auszugeben. Das Zurückgeben eines Wertes ist nicht ihre Hauptfunktion. Daher gibt puts aus Gründen der Bequemlichkeit und Konsistenz immer nil zurück. Das sollte man sich einfach merken.
Viele Methoden in Ruby, die Nebenwirkungen haben (zum Beispiel die Ausgabe auf dem Bildschirm oder die Modifikation eines Objekts), geben nil oder das Objekt zurück, auf dem sie aufgerufen werden. Das macht ihr Verhalten vorhersehbar und ermöglicht es, leicht zu verstehen, dass die Hauptaktion der Methode als Nebenwirkung und nicht durch den zurückgegebenen Wert stattgefunden hat.
Beispiel mit der Methode:
def say_hello
  puts "Hallo!"
end

result = say_hello

result
=> nil
Dasselbe gilt für bedingte Ausdrücke. In Ruby gibt jeder Ausdruck einen Wert zurück. Wenn Sie Code ausführen, der bedingte Operatoren oder Methoden enthält, gibt Ruby immer das Ergebnis des letzten ausgeführten Ausdrucks zurück. Im folgenden Beispiel erhalten Sie => nil, weil der letzte Ausdruck im Code der bedingte Operator if ist, der den Wert des letzten ausgeführten Blocks zurückgibt.
value = false
if value
  puts "Dieser Code wird nicht ausgeführt"
else
  puts "Die Variable value ist false"
end

Ergebnis:
Die Variable value ist false
=> nil
Schauen wir uns das genauer an.
value = false
if value
  puts "Dieser Code wird nicht ausgeführt"
else
  puts "Die Variable value ist false"
end
In diesem Code hat die Variable value den Wert false. Der if-Operator überprüft den Wert von value. Da value false ist, führt Ruby den Codeblock innerhalb von else aus.
puts "Die Variable value ist false"
Die Methode puts gibt die Zeichenkette "Die Variable value ist false" aus und gibt nil zurück, da puts immer nil zurückgibt, nachdem sie eine Zeichenkette auf dem Bildschirm ausgegeben hat. Daher ist das Ergebnis der Ausführung des else-Blocks nil.
Folglich gibt der bedingte Operator if, wenn er die Ausführung beendet, den Wert des letzten ausgeführten Ausdrucks zurück, der das Ergebnis von puts ist, also nil.
Deshalb sehen Sie:
Die Variable value ist false
=> nil
Ich hoffe, wir haben dieses Thema geklärt ^_^

Dieser Beitrag hat noch keine Ergänzungen vom Autor.

Was bedeutet "Nativ"?
22. Mai, 07:01 Uhr

Was bedeutet "Nativ"?

meme code
meme code@memecode
Wie funktioniert 'rails console --sandbox'?
23. Mai, 19:39 Uhr

Wie funktioniert 'rails console --sandbox'?

meme code
meme code@memecode
Wofür wird die CVE-Datenbank (Common Vulnerabilities and Exposures) benötigt?
29. Mai, 08:05 Uhr

Wofür wird die CVE-Datenbank (Common Vulnerabilities and Exposures) benötigt?

meme code
meme code@memecode
29. Mai, 09:09 Uhr

Welche Betriebssysteme unterstützen Ruby?

meme code
meme code@memecode
Erstellt Ruby eine neue Kopie des Objekts, wenn eine Variable einer anderen Variable zugewiesen wird?
29. Mai, 09:30 Uhr

Erstellt Ruby eine neue Kopie des Objekts, wenn eine Variable einer anderen Variable zugewiesen wird?

meme code
meme code@memecode
Was ist der Unterschied zwischen immediate value und reference in Ruby?
29. Mai, 12:00 Uhr

Was ist der Unterschied zwischen immediate value und reference in Ruby?

meme code
meme code@memecode
Was ist der Unterschied zwischen nil und false in Ruby?
29. Mai, 20:59 Uhr

Was ist der Unterschied zwischen nil und false in Ruby?

meme code
meme code@memecode
Warum ist eine leere Zeichenkette (string) in Ruby nicht false?
31. Mai, 14:39 Uhr

Warum ist eine leere Zeichenkette (string) in Ruby nicht false?

meme code
meme code@memecode
Sichtbarkeit des lokalen Variablenbereichs in Ruby
03. Jun, 16:46 Uhr

Sichtbarkeit des lokalen Variablenbereichs in Ruby

meme code
meme code@memecode
Was ist der Unterschied zwischen int und bigint in Ruby? Minimale und maximale Werte.
13. Jun, 06:37 Uhr

Was ist der Unterschied zwischen int und bigint in Ruby? Minimale und maximale Werte.

meme code
meme code@memecode
Was bedeutet der Fehler 'is out of range' in Ruby on Rails? Bereichsfehler - Ganzzahl mit einer Begrenzung von 4 Bytes
13. Jun, 07:18 Uhr

Was bedeutet der Fehler 'is out of range' in Ruby on Rails? Bereichsfehler - Ganzzahl mit einer Begrenzung von 4 Bytes

meme code
meme code@memecode
Was sind Immutabilität und Mutabilität?
19. Jun, 07:48 Uhr

Was sind Immutabilität und Mutabilität?

meme code
meme code@memecode