Grundlegendes zu Datentypen in Ruby

Einführung

Wenn Sie Programme schreiben, verwenden Sie Datentypen, um Daten zu klassifizieren. Datentypen teilen dem Computer mit, wie er mit den Daten in Ihrem Programm umgehen soll. Sie bestimmen auch, was Sie mit den Daten tun können, einschließlich der Vorgänge, die Sie ausführen können.

Eine Möglichkeit, über Datentypen nachzudenken, besteht darin, die verschiedenen Datentypen zu berücksichtigen, die wir in der realen Welt verwenden. Zum Beispiel verwenden wir ganze Zahlen (0, 1, 2,…), ganze Zahlen (…, -1, 0, 1,…) und irrationale Zahlen (π).

Normalerweise können wir in der Mathematik Zahlen aus verschiedenen Typen kombinieren und eine Art Antwort erhalten. Zum Beispiel möchten wir vielleicht 5 zu π addieren:

5 + π

Wir können entweder die Gleichung als Antwort behalten, um die irrationale Zahl zu berücksichtigen, oder wir können π auf eine Zahl mit einer kurzen Anzahl von Dezimalstellen runden und dann die Zahlen addieren:

5 + π = 5 + 3.14 = 8.14

Aber wenn wir versuchen, Zahlen mit einem anderen Datentyp, wie beispielsweise Wörtern, auszuwerten, werden die Dinge weniger sinnvoll. Wie würden wir die folgende Gleichung lösen?

sky + 8

Wir wissen dies nicht sofort zu lösen. Der Computer kann dies auch nicht, da es sich um zwei verschiedene Datentypen handelt. "Sky" ist ein Wort und "+ 8 +" ist eine ganze Zahl. Wenn wir Programme schreiben, müssen wir vorsichtig sein, wie wir Werte zuweisen und wie wir sie durch Operationen wie Addition, Subtraktion, Multiplikation und andere manipulieren.

In diesem Lernprogramm lernen Sie die wichtigsten Ruby-eigenen Datentypen kennen: Ganzzahlen, Gleitkommazahlen, Zeichenfolgen, Symbole, Arrays und Hashes. Dies ist keine erschöpfende Untersuchung der Datentypen, sondern hilft Ihnen, sich mit den Optionen vertraut zu machen, die Ihnen in Ihren Programmen zur Verfügung stehen.

Anschließend erkunden Sie dynamisches Tippen. Ruby-Programme bestimmen Datentypen basierend auf dem Inhalt der Variablen. Wenn Sie also wissen, wie dynamisches Tippen funktioniert, können Sie schwierige Situationen in Ihren eigenen Programmen vermeiden. Und da Variablen einen beliebigen Wert enthalten können, lernen Sie, den Datentyp einer Variablen zu identifizieren.

Beginnen wir mit der Arbeit mit ganzen Zahlen in Ruby.

Ganze Zahlen

Wie in der Mathematik sind Integer in der Computerprogrammierung ganze Zahlen, die positiv, negativ oder 0 sein können (…, + -1 +, + 0 +, + 1 +,…). Eine Ganzzahl wird auch als "+ int +" bezeichnet.

Sie können eine ganze Zahl wie folgt ausdrucken:

print -25
Output-25

Sie können die Ganzzahl auch in einer Variablen speichern und den Wert dann ausdrucken, indem Sie auf die Variable verweisen:

my_int = -25
print my_int
Output-25

Sie können auch mit ganzen Zahlen rechnen. Sie können beispielsweise die Summe zweier Zahlen berechnen und das Ergebnis ausdrucken:

sum = 116 - 68
print sum
Output48

Wenn wir größere Zahlen ausschreiben, verwenden wir in der Regel Kommas, um die Lesbarkeit zu verbessern. Zum Beispiel schreiben wir "+ 1,000,000 " für "eine Million". In Ihrem Code können Sie keine Kommas verwenden, in Ruby können Sie jedoch das Unterstrich-Zeichen (" _ +") verwenden, um große Zahlen besser lesbar zu machen.

Versuch es:

large_number.rb

large_number = 1_234_567
print large_number

Die Ganzzahl wird ohne Unterstriche gedruckt:

Output1234567

Mit den Unterstrichen können Sie besser lesbaren Code schreiben, wenn Sie in Ihren Programmen große Zahlen darstellen müssen.

Wenn Sie mehr über die Ruby-Sprache lernen, haben Sie viel mehr Möglichkeiten, mit ganzen Zahlen zu arbeiten. Schauen wir uns an, wie man mit reellen Zahlen arbeitet.

Gleitkommazahlen

Eine Gleitkommazahl oder ein float steht für eine wirkliche Zahl. Reelle Zahlen können entweder eine rationale oder eine irrationale Zahl sein. Zahlen, die einen Bruchteil enthalten, wie z. B. "+ 9.0 " oder " -116.42 +". Mit anderen Worten, ein Gleitkomma in einem Ruby-Programm ist eine Zahl, die einen Dezimalpunkt enthält.

Sie können Gleitkommazahlen in Ruby genauso ausdrucken wie ganze Zahlen:

print 17.3
Output17.3

Sie können auch eine Variable deklarieren und einen Gleitkomma zuweisen:

my_float = 17.3
print my_float
Output17.3

Und genau wie bei Ganzzahlen können Sie auch in Ruby mit Floats rechnen:

sum = 564.0 + 365.24
print sum
Output929.24

Wenn Sie einer Ganzzahl in Ruby einen Gleitkommawert hinzufügen, erhalten Sie einen Gleitkommawert:

sum = 564 + 365.24
print sum
Output929.24

Ruby betrachtet jede Zahl, die ohne Dezimalstellen geschrieben wurde, als Ganzzahl (wie in + 138 +) und jede Zahl, die mit Dezimalstellen geschrieben wurde, als Gleitkommazahl (wie in + 138.0 +).

Schauen wir uns als nächstes die Booleschen Werte in Ruby an.

Boolesche Datentypen

Booleans werden verwendet, um die Wahrheitswerte darzustellen, die dem logischen Zweig der Mathematik zugeordnet sind, der Algorithmen in der Informatik informiert. In Ruby stellen wir diesen Datentyp mit einem von zwei Werten dar, entweder "+ true " oder " false +".

Viele mathematische Operationen geben uns Antworten, die entweder wahr oder falsch sind:

  • größer als

  • 500> 100 + true +

  • 1> 5 + false +

  • weniger als

  • 200 <400 + true +

  • 4 <2 + false +

  • gleich

  • 5 = 5 + true +

  • 500 = 400 + false +

Wie bei Zahlen können Sie einen "+ true" - oder "+ false" -Wert in einer Variablen speichern:

result = 5 > 8

Sie können dann den Booleschen Wert mit einem Aufruf der Funktion + print () + drucken:

print result

Da 5 nicht größer als 8 ist, wird folgendes Ergebnis angezeigt:

Outputfalse

Wenn Sie mehr Programme in Ruby schreiben, werden Sie besser mit der Funktionsweise von Booleschen Methoden vertraut, und erfahren, wie verschiedene Funktionen und Operationen, die mit "+ true " oder " false +" bewertet werden, den Programmverlauf verändern können.

Lassen Sie uns als Nächstes die Arbeit mit Text in unseren Programmen untersuchen.

Streicher

Ein _https: //www.digitalocean.com/community/tutorials/how-to-work-with-strings-in-ruby [string] _ ist eine Folge von einem oder mehreren Zeichen wie Buchstaben, Zahlen und Symbolen. Zeichenfolgen sind in Ruby hauptsächlich in einfachen Anführungszeichen ("" + ") oder in doppelten Anführungszeichen (" + "") enthalten. Um eine Zeichenfolge zu erstellen, müssen Sie eine Zeichenfolge in Anführungszeichen einschließen:

"This is a string in double quotes."

Das einfache Programm "https://www.digitalocean.com/community/tutorials/how-to-write-your-first-python-3-program[Hello, World!]" Zeigt, wie ein String in der Computerprogrammierung verwendet werden kann , da die Zeichen, aus denen die Phrase "+ Hello, World! +" besteht, eine Zeichenfolge sind.

print "Hello, World!"

Wie bei anderen Datentypen können Sie Zeichenfolgen in Variablen speichern:

output = "Hello, World!"

Und drucken Sie den String aus, indem Sie die Variable aufrufen:

print output
OutputHello, World!

Wie bei Zahlen gibt es viele Operationen, die wir mit Zeichenfolgen in unseren Programmen ausführen können, um sie zu manipulieren und die gewünschten Ergebnisse zu erzielen. Zeichenfolgen sind wichtig für die Übermittlung von Informationen an den Benutzer und für die Übermittlung von Informationen an das Programm.

Manchmal müssen Sie mit Datenlisten arbeiten. Hier bieten sich Arrays an.

Arrays

Ein https: //www.digitalocean.com/community/tutorials/how-to-work-with-arrays-in-ruby [array] _ kann mehrere Werte in einer einzelnen Variablen enthalten. Dies bedeutet, dass Sie eine Liste von Werten innerhalb eines Arrays enthalten und diese durchlaufen können. Jedes Element oder jeder Wert in einem Array wird als _Element bezeichnet.

Arrays werden durch bestimmte Werte in eckigen Klammern + [] + definiert, die durch Kommas getrennt sind.

Ein Array von Ganzzahlen sieht folgendermaßen aus:

[-3, -2, -1, 0, 1, 2, 3]

Eine Reihe von Floats sieht folgendermaßen aus:

[3.14, 9.23, 111.11, 312.12, 1.05]

Hier ist eine Liste von Zeichenfolgen:

['shark', 'cuttlefish', 'squid', 'mantis shrimp']

Wie bei anderen Datentypen können Sie einer Variablen ein Array zuweisen:

sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp']

Wenn wir die Variable ausdrucken, sieht die Ausgabe genauso aus wie das Array, das wir erstellt haben:

print sea_creatures
['shark', 'cuttlefish', 'squid', 'mantis shrimp']

Sie greifen auf einzelne Elemente in einem Array zu, indem Sie eine Indexnummer verwenden, die bei "+ 0 +" beginnt.

puts sea_creatures[0]  # shark
puts sea_creatures[2]  # squid

Um den letzten Wert auszudrucken, können Sie den Index + -1 + verwenden. Ruby bietet auch die Methoden + .first + und .` + last + `, um den ersten bzw. letzten Eintrag zu erfassen:

puts sea_creatures.first  # shark
puts sea_creatures.last   # mantis shrimp

Arrays in Ruby können viele verschiedene Arten von Daten enthalten. Sie können Zeichenfolgen, Symbole und sogar andere Arrays in einem Array speichern:

record = [
 :en,
 "Sammy",
 42,
 [
   "coral",
   "reef"
 ]
]

Arrays in Ruby sind mutable, dh Sie können Werte hinzufügen, Werte entfernen und sogar Einträge im Array ändern.

Manchmal brauchen wir eine Möglichkeit, Dinge in einem Programm zu kennzeichnen. Dafür stehen Symbole.

Symbole

Ein Symbol ist ein spezieller Datentyp, der in einem Ruby-Programm wie eine Bezeichnung oder ein Bezeichner wirkt. Symbole sind immutable, was bedeutet, dass sie nicht geändert werden können. Ein Symbol sieht aus wie eine Variablendeklaration ohne Wert. Hier ist ein Beispiel für ein Symbol:

:time_zone

In Ruby verwenden Sie normalerweise ein Symbol, um wichtige Elemente zu kennzeichnen, während Sie eine Zeichenfolge für Text verwenden, mit dem Sie arbeiten oder den Sie bearbeiten müssen. Jede Zeichenfolge in einem Ruby-Programm ist ein eigenes Objekt mit einer eigenen eindeutigen Position im Speicher, auch wenn die Zeichenfolgen identisch sind.

Wenn Sie jedoch mehrmals auf dasselbe Symbol verweisen, verweisen Sie überall in Ihrem Programm auf dasselbe Objekt. Dies bedeutet, dass Sie auf denselben Speicherort verweisen.

Sie werden dieses Konzept in Aktion sehen, wenn Sie sich Hashes ansehen, mit denen Sie Schlüssel mit Werten verknüpfen können.

Hashes

Ein hash ist eine wörterbuchartige Sammlung von Schlüsseln und Werten. Diese Schlüssel-Wert-Paare bieten eine nützliche Möglichkeit zum Speichern und Zugreifen auf Daten. Hashes werden häufig verwendet, um verwandte Daten zu speichern, z. B. Informationen zu einem Benutzer. Sie definieren einen Hash wie folgt:

{"first_name" => "Sammy", "last_name" => "Shark"}

Sie können Variablen wie auch anderen Datentypen Hashes zuweisen:

user = {"first_name" => "Sammy", "last_name" => "Shark"}

Um Werte aus dem Hash "+ user +" abzurufen, verwenden Sie den Schlüssel für den Wert:

print user["first_name"]  # "Sammy"
print user["last_name"]   # "Shark"

Sie können Symbole anstelle von Zeichenfolgen als Schlüssel in Ihrem Hash verwenden:

user = {:first_name => "Sammy", :last_name => "Shark"}

Die Verwendung von Symbolen als Hash-Schlüssel wird nach Möglichkeit bevorzugt. Jede Instanz eines Symbols verweist auf dasselbe Objekt, während jede Instanz einer Zeichenfolge auf ein eindeutiges Objekt verweist. Die Verwendung von Symbolen als Tasten führt zu einer etwas besseren Leistung und einer geringeren Speichernutzung.

Wenn Sie Symbole als Schlüssel verwenden, verwenden Sie Symbole, um die Werte abzurufen:

print user[:first_name]  # "Sammy"
print user[:last_name]   # "Shark"

Sie können auch eine etwas andere Syntax verwenden, wenn Sie den Hash definieren:

user = {first_name: "Sammy", last_name: "Shark"}

Diese Syntax ähnelt der in JavaScript und anderen Sprachen verwendeten Syntax. Diese Syntax definiert die Schlüssel als Symbole, sodass Sie auf die Einträge zugreifen, indem Sie ": Vorname +" und ": Nachname " anstelle der Zeichenfolgen "" Vorname "" und "" Nachname "+" verwenden.

Sie haben sich mehrere Datentypen angesehen. Schauen wir uns also an, wie Ruby mit diesen Typen funktioniert.

Dynamische Eingabe

In Ruby deklarieren Sie keinen Datentyp explizit, bevor Sie einen Wert zuweisen. Die Zuweisung des Wertes bestimmt den Datentyp. Ruby verwendet dynamic typing, was bedeutet, dass die Typprüfung zur Laufzeit und nicht zur Kompilierungszeit durchgeführt wird, wie in Sprachen, die static typing verwenden. Ruby ermittelt den Datentyp aus den in der Variablen gespeicherten Daten. Dies ähnelt data types in Python und https://www.digitalocean.com/community/tutorials / Understanding-Data-Types-In-Javascript [Datentypen in JavaScript].

Die Variable "+ t +" im folgenden Beispiel kann auf einen beliebigen verfügbaren Datentyp gesetzt werden:

t = 42        # t is an Integer
t = "Sammy"   # t is a String
t = :sammy    # t is a Symbol
t = true      # t is a boolean (true)
t             # t is nil

Bei dynamisch typisierten Sprachen können Sie eine vorhandene Variable wiederverwenden, um verschiedene Datentypen zu speichern.

Dies ist nützlich, wenn Sie Daten von einem Typ in einen anderen konvertieren. Beispielsweise könnten Sie diesen Code haben, der den Benutzer nach einem numerischen Wert fragt:

print "Please enter the length of the room: "
length = gets.chop

Die Daten, die Sie von der Tastatur erhalten, sind immer Zeichenfolgen. Um also mathematische Operationen auszuführen, müssen Sie die Daten der Variablen "+ length " in eine Zahl konvertieren. In statisch typisierten Sprachen, in denen Sie den Datentyp der Variablen deklarieren müssen, bevor Sie einen Wert zuweisen können, benötigen Sie eine neue Variable, um die konvertierten Daten zu speichern. In Ruby können Sie jedoch die Variable " length +" wiederverwenden, da sie dynamisch eingegeben wird.

# Convert the amount to a Float.
length = length.to_f

Die + to_f + Methode konvertiert den String in einen Float. Ruby bietet auch die Methode + to_i +, um Strings in Ganzzahlen zu konvertieren. Die meisten Objekte können mit der Methode + to_s + in Strings konvertiert werden:

42.to_s                    # "42"
(42.5).to_s                # "42.5"
["Sammy", "Shark"].to_s    # "[\"Sammy\", \"Shark\"]"

Ruby ist dynamisch typisiert, aber Sie können keine Vorgänge mit verschiedenen Datentypen ausführen, ohne sie in denselben Typ zu konvertieren. Dieser Code führt beispielsweise zu einem Fehler:

print 5 + "5"
OutputTypeError: String can't be coerced into Integer

Wie wird dieser Code:

print "5" + 5
OutputTypeError: no implicit conversion of Integer into String

Wenn Sie die Zahlen addieren möchten, um "+ 10 " zu erhalten, konvertieren Sie den String in eine Ganzzahl. Wenn Sie sie zusammenfügen möchten, um "" 55 "+" zu erhalten, konvertieren Sie die Ganzzahl in einen String.

Dynamisches Tippen bietet Flexibilität, aber ein Nachteil ist, dass Sie nicht immer sicher sein können, mit welcher Art von Daten Sie arbeiten, da die Variable jeden verfügbaren Typ enthalten kann. Mit Ruby können Sie den Datentyp identifizieren.

Datentypen identifizieren

In Ruby ist fast alles ein Objekt. Integer, Float, Array, Symbol und Hash sind alles Ruby-Objekte, und alle haben eine Methode mit dem Namen "+ class ", die Ihnen sagt, um welchen Typ es sich handelt. Auch die Booleschen Werte " true" und "+ false" und der Wert "+ nil" sind Objekte. Probieren Sie es aus:

42.class                   # Integer
(42.2).class               # Float
["Sammy", "Shark"].class   # Array
true.class                 # TrueClass
nil.class                  # NilClass

Darüber hinaus können Sie die Methode "+ kind_of? +" Verwenden, um einen bestimmten Datentyp zu überprüfen:

42.kind_of?(Integer)    # true

Dies ist besonders nützlich, wenn Sie eine Variable haben und deren Typ bestimmen möchten:

# somewhere in the code...
sharks = ["Hammerhead", "Tiger", "Great White"]
...
# somewhere else...

sharks.kind_of?(Hash)   # false
sharks.kind_of?(Array)  # true

Sie können dies auch verwenden, um zu überprüfen, ob die von einer externen Quelle stammenden Daten korrekt sind:

if data.kind_of? String
 data = data.to_f
end

Ruby stellt auch die Methode "+ is_a? " Zur Verfügung, die das Gleiche tut wie " kind_of? +", Aber für einige Entwickler möglicherweise etwas einfacher zu lesen ist:

if data.is_a? String
 data = data.to_f
end

Durch die Verwendung von "+ class ", " kind_of? " Und " is_a? +" Können Sie sicherstellen, dass Sie mit der richtigen Art von Daten arbeiten. Wenn Sie mehr über Ruby erfahren, werden Sie andere Möglichkeiten für den Umgang mit Daten entdecken, bei denen der Datentyp nicht explizit überprüft wird.

Fazit

Sie werden in Ihren Ruby-Programmen viele verschiedene Datentypen verwenden. Sie haben jetzt ein besseres Verständnis der wichtigsten in Ruby-Programmen verfügbaren Datentypen.

Schauen Sie sich diese Tutorials an, um Ihre Erkundung der Ruby-Datentypen fortzusetzen: