InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
Ein leerer String in Ruby ist nicht false. Programmierer vergleichen diesen Aspekt gerne mit Perl, da ein leerer String in Perl false ist.
Man muss sich merken, dass in Ruby die falschen Werte nur nil und false sind.
In Ruby werden bedingte Ausdrücke basierend auf der logischen Wahrhaftigkeit (truthiness) oder Falschheit (falsiness) von Werten ausgewertet. Von allen möglichen Werten in Ruby sind nur zwei falsch: nil und false. Alle anderen Werte, einschließlich des leeren Strings (""), gelten als wahr (true).
Das bedeutet, dass bei der Verwendung eines leeren Strings in einem bedingten Ausdruck dieser immer als true interpretiert wird. Um zu überprüfen, ob ein String leer ist, kann man mehrere Ansätze verwenden:
Methode empty?
str = "" puts "Leerer String" if str.empty? Leerer String => nil
Wir sehen, dass str.empty? true zurückgegeben hat und die Antwort ausgedruckt wurde. Danach sehen wir nil, aber warum - lesen Sie mehr darüber in diesem Beitrag.
Ruby hat eingebaute Methoden, die zeigen, ob ein String leer ist. Und genau diese Methoden sollten in bedingten Ausdrücken verwendet werden, um den Code maximal verständlich zu machen.
Vergleich mit leerem String
str = ""puts "Leerer String" if str == ""Leerer String=> nil
Ruby ist eine coole Sprache und erlaubt es, die gleichen Dinge auf verschiedene Arten zu tun. Daher kann man, wenn man möchte, den Vergleich mit einem leeren String in bedingten Ausdrücken verwenden.
Überprüfen der Länge des Strings
str = "" puts "Leerer String" if str.size == 0 # oder puts "Leerer String" if str.length == 0
Wie ich bereits schrieb - Ruby erlaubt es, die gleichen Dinge auf verschiedene Arten zu tun (beachten Sie die Methoden size und length).
Warum gibt ein leerer String true zurück?
Vielleicht erscheint es unlogisch, denn '' ist etwas, das eher wie nichts / Leere aussieht. Aber lassen Sie uns das ein wenig aufschlüsseln.
In Ruby ist es einfacher, alle Objekte außer nil und false als wahr zu betrachten. Das reduziert die Anzahl der speziellen Fälle, die sich ein Programmierer merken muss. Ruby basiert auf dem Prinzip, dass alles ein Objekt ist. Das bedeutet, dass jeder Wert, einschließlich des leeren Strings, ein Objekt sein und ein bestimmtes Verhalten haben muss. Da der leere String ein Objekt der Klasse String ist, wird er als wahr betrachtet. Indem Ruby den leeren String als wahr betrachtet, vereinfacht es bedingte Ausdrücke und macht den Code vorhersehbarer. Zum Beispiel kann man in bedingten Ausdrücken immer darauf zählen, dass nur nil und false als falsch betrachtet werden.
str = "" if str puts "String ist nicht nil oder false" else puts "String ist nil oder false" end
Übrigens, lassen Sie uns beweisen, dass ein Objekt der Klasse String (nämlich der leere String) kein immediate value ist. Ein leerer String (wie jedes Objekt der Klasse String) ist kein immediate value, sondern wird als Objekt im Speicher dargestellt. In Ruby sind nur nil und false in bedingten Ausdrücken false. Alle anderen Werte, einschließlich des leeren Strings, gelten als wahr (truthy).
str1 = "" str2 = "" puts str1.object_id == str2.object_id => false # Das bedeutet, dass jeder String seine eigene object_id hat str1.object_id => 46820 str2.object_id => 46800
Das bedeutet, dass wir zwei verschiedene String-Objekte mit leerem Inhalt haben. Und das Objekt gibt in bedingten Ausdrücken true zurück.
Dieser Beitrag hat noch keine Ergänzungen vom Autor.