Ruby ist eine bekannte Programmiersprache. Sie zielt darauf ab, Einfachheit und Produktivität zu verbessern. Sie ist außerdem eine vollständig objektorientierte Programmiersprache. Darüber hinaus bietet Ruby eine elegante Syntax, die natürlich zu lesen und einfach zu schreiben ist.
Jede Programmierung erfordert die Verwaltung verschiedener Datentypen. Ein Datentyp beschreibt eine bestimmte Klasse von Daten. Er teilt der Maschine mit, wie sie die Daten im Programm behandeln soll. Datentypen sind entscheidend dafür, was mit den Daten getan werden kann (einschließlich der Operationen, die ausgeführt werden können). In diesem Tutorial werden wir tiefer in die in Ruby verfügbaren Datentypen eintauchen. Wir werden auch die dynamische Typisierung untersuchen. Mit dieser Funktion kann Ruby den Datentyp einer Variablen automatisch bestimmen, ohne ihn explizit deklarieren zu müssen. Fangen wir an!
Voraussetzungen
Um die in dieser Anleitung gezeigten Schritte zu üben und zu implementieren, benötigen Sie die folgenden Komponenten:
- Ein ordnungsgemäß konfiguriertes Linux-System. Erfahren Sie mehr über die Einrichtung eines persönlichen Ubuntu-Servers auf CloudSigma.
- Eine ordnungsgemäß konfigurierte Ruby-Entwicklungsumgebung. Schauen Sie sich die offizielle Dokumentation zur Installation von Ruby auf Ubuntu (unter Verwendung von APT) an.
Datentypen in Ruby
Ruby bietet alle gängigen Datentypen, die Ihnen in jeder Programmiersprache begegnen: Integer, Floats, Strings, Arrays, Symbole, Hashes usw. Als Nächstes geben wir einen Überblick darüber, wie man mit den verschiedenen Datentypen von Ruby arbeitet.
Schritt 1 – Ganzzahlen
Ähnlich wie in der Mathematik sind Ganzzahlen in der Computerprogrammierung ganze Zahlen. Der Wert kann positiv, negativ oder 0 sein. Der Wertebereich ist wie folgt:
|
1 |
{-∞, …, -1, 0, 1, …, ∞} |
Zeit, Ganzzahlen in Ruby auszuprobieren. Das erste Beispiel gibt eine einfache Ganzzahl auf dem Bildschirm aus:
|
1 2 |
print 99 print "\n" |
Als Nächstes werden wir mit einer Ganzzahl-Variable arbeiten. Hier enthält die Variable sample_int einen Ganzzahlwert (99) und die print-Funktion gibt den Variablenwert auf dem Bildschirm aus:
|
1 2 3 |
sample_int = 99 print sample_int print "\n" |
Wir können auch mathematische Operationen mit Ganzzahlen durchführen. Das folgende Beispiel zeigt eine einfache Summation von zwei Ganzzahlen:
|
1 2 3 |
sample_int = 99 + 100 print sample_int print "\n" |
Wenn wir’re mit großen Zahlen arbeiten, verwenden wir oft Kommas (,), um das Lesen zu erleichtern. Beispielsweise wird eine Million (1000000) zur besseren Lesbarkeit als 1,000,000 geschrieben. Während die Verwendung von Kommas verboten ist, erlaubt Ruby die Verwendung von Unterstrichen ( _) als Trennzeichen. Werfen Sie einen Blick auf das folgende Beispiel:
|
1 2 3 |
sample_int = 1_000_999 print sample_int print "\n" |
Die Verwendung von Unterstrichen verbessert die Lesbarkeit des Codes, insbesondere bei der Arbeit mit großen Ganzzahlwerten.
Schritt 2 – Gleitkommazahlen
Eine Gleitkommazahl (oder kurz Float) stellt eine reelle Zahl dar. Ähnlich wie in der mathematischen Definition können reelle Zahlen rational oder irrational sein. In Ruby ist ein Float im Grunde eine Zahl, die einen Dezimalpunkt enthält.
Versuchen wir, einen Float-Wert auf dem Bildschirm auszugeben:
|
1 2 |
print 55.66 print "\n" |
Das nächste Beispiel zeigt die Deklaration einer Float-Variable:
|
1 2 3 |
sample_float = 55.66 print sample_float print "\n" |
Wir können auch verschiedene mathematische Operationen mit den Float-Werten und -Variablen durchführen. Das folgende Beispiel zeigt eine einfache Summation von zwei Float-Zahlen:
|
1 2 3 |
sample_float = 55.66 + 99.222 print sample_float print "\n" |
Was passiert, wenn wir einen Float und ein Integer addieren? Der resultierende Wert ist ein Float. Im folgenden Beispiel wird 55.0, obwohl es eine ganze Zahl ist, als Float behandelt:
|
1 2 3 |
sample_float = 55.0 + 10 print sample_float print "\n" |
Schritt 3 – Boolean
Boolesche Werte repräsentieren die Wahrheitswerte des Teilbereichs Logik in der Mathematik. In Ruby werden boolesche Datentypen durch zwei Werte dargestellt: true und false:
-
Größer als
-
100 > 99: true
-
99 > 100: false
-
-
Kleiner als
-
500 < 999: true
-
999 < 500: false
-
-
Gleich
-
10 == 10: true
-
9 == 99: false
-
Ähnlich wie Zahlen können wir auch ein true oder false Wert in einer Variablen. Das folgende Beispiel demonstriert diese Funktion:
|
1 2 3 |
result = 9 == 99 print result print "\n" |
Step 4 – Strings
In der Programmierung wird ein String als eine Sequenz von Zeichen (Buchstaben, Zahlen und Symbolen) dargestellt. In Ruby existieren Strings innerhalb von einfachen Anführungszeichen ( ') oder doppelten Anführungszeichen ( "). Wir haben bereits die Verwendung von Strings in Ruby im Detail behandelt, daher wird dies ein kurzer Abschnitt sein.
Das folgende Beispiel ist ein einfaches hello world-Programm in Ruby:
|
1 |
print "hello world!\n" |
Wir können Strings auch in Variablen speichern. Das folgende Beispiel beinhaltet auch eine String-Verkettung:
|
1 2 |
username = "Cloudsigma" print "hello, " + username + "!\n" |
Step 5 – Arrays
Ein Array ist eine Datenstruktur, die eine Sammlung von Elementen desselben Datentyps mit fester Größe speichern kann. Es kann auch als eine Sammlung von Variablen desselben Datentyps konzipiert werden. Es ist eine der grundlegendsten Datenstrukturen in den meisten modernen Programmiersprachen.
In Ruby wird ein Array wie folgt definiert:
|
1 |
[value_1, value_2, …, value_N] |
Es ist möglich, ein Array aus allen anderen Datentypen zu erstellen, die wir bisher besprochen haben (Integer, Float und Strings). Hier sind einige Beispiele:
-
Integer: [-5, 0, 5]
-
Float: [-9.99, -6.99, -3.99, 0, 3.99]
-
String: [“the”, “quick”, “brown”, “fox”]
Das folgende Beispiel implementiert all diese Arten von Arrays:
|
1 2 3 4 5 6 |
print [-5, 0, 5] print "\n" print [-9.99, -6.99, -3.99, 0, 3.99] print "\n" print ["the", "quick", "brown", "fox"] print "\n" |
Beachten Sie, dass die print-Funktion, wenn sie auf ein Array stößt, das gesamte Array auf dem Bildschirm ausgibt. Aus Gründen der Bequemlichkeit werden Sie Arrays oft als Variablen vorfinden. Lassen Sie uns den Code aktualisieren:
|
1 2 3 4 5 6 7 8 9 10 |
array_int = [-5, 0, 5] print array_int print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string print "\n" |
Jetzt können wir mit einzelnen Elementen der Arrays arbeiten:
|
1 2 3 4 5 6 7 8 9 |
array_int = [-5, 0, 5] print array_int[2] print "\n" array_float = [-9.99, -6.99, -3.99, 0, 3.99] print array_float[1] print "\n" array_string = ["the", "quick", "brown", "fox"] print array_string[3] print "\n" |
Beachten Sie, dass in Ruby der Indexwert von Arrays bei 0 beginnt.
Aus Gründen der Bequemlichkeit verfügen Arrays in Ruby über die .first- und die .last-Methoden, die das erste und das letzte Element ausgeben:
|
1 2 3 4 |
array_float = [-9.99, -6.99, -3.99, 0, 3.99] puts array_float.first puts array_float.last print "\n" |
In Ruby haben Arrays eine weitere interessante Eigenschaft. Sie können verschiedene Datentypen gleichzeitig enthalten. Sie können beispielsweise Strings, Symbole und sogar andere Arrays speichern:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
mixed_array = [ "hello", 99.99, "world", [ "the", "quick", "brown", "fox" ] ] print mixed_array print "\n" print mixed_array[3] print "\n" |
Schritt 6 – Symbole
In Ruby ist ein Symbol ein spezieller Datentyp, der wie ein Label oder ein Identifikator wirkt. Symbole sind unveränderlich, was bedeutet, dass sie nicht geändert werden können. Symbole erscheinen so, als würde man Variablen ohne Wert deklarieren.
Hier’s ein Beispiel für ein Symbol:
|
1 |
:time_zone |
Im Allgemeinen werden Symbole verwendet, um etwas Wichtiges zu identifizieren. Für andere Situationen sind Strings jedoch völlig ausreichend.
Da Ruby eine objektorientierte Sprache ist, behandelt sie alles als Objekt (einschließlich Strings) mit einer eindeutigen Speicheradresse, selbst wenn die Strings identisch sind. Wenn Sie jedoch auf ein Symbol verweisen, handelt es sich überall im Programm um dasselbe Objekt, also um dieselbe Speicheradresse.
Schritt 7 – Hashes
Ein Hash ist eine wörterbuchähnliche Sammlung von Schlüsseln und Werten. Oft werden Hashes verwendet, um zusammenhängende Daten zu speichern, beispielsweise Informationen über einen Benutzer.
Hier’s ein kurzes Beispiel für einen Hash. Wir haben einen Hash erstellt user_info , der den Benutzernamen und das Passwort eines Benutzers enthält:
|
1 2 3 4 5 6 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info print "\n" |
Um die Werte eines Schlüssel-Wert-Paares abzurufen, müssen wir den Schlüssel verwenden. Das folgende Beispiel demonstriert diesen Prozess:
|
1 2 3 4 5 6 7 |
user_info = { "username" => "HelloWorld999", "password" => "password123" } print user_info["username"] print "\n" |
Ruby ermöglicht es auch, einen Hash mit einer etwas anderen Syntax zu definieren ( : anstelle von =>):
|
1 2 3 4 5 6 |
user_info = { username: "HelloWorld999", password: "password123" } print user_info[:password] print "\n" |
Diese Syntaxstruktur ähnelt der Syntax, die in anderen Sprachen verwendet wird, zum Beispiel JavaScript. In dieser Syntaxstruktur sind die Schlüssel als Symbole definiert. Deshalb verwenden wir anstelle von "username" Folgendes: username , um auf den Wert zuzugreifen.
Dynamische Typisierung
Sie haben vielleicht schon bemerkt, dass wir bei der Deklaration einer Variable keinen Datentyp explizit zuweisen müssen. Stattdessen bestimmt der Wert der Variable den Datentyp. Ruby verwendet dynamische Typisierung , bei der die Typprüfung zur Laufzeit durchgeführt wird. Im Gegensatz dazu werden die Datentypen bei statischer Typisierung in Programmiersprachen (wie z. B. C/C++) während der Kompilierung bestimmt.
In dem folgenden Beispiel sind alle der Variable dyn_var zugewiesenen Werte gültig:
|
1 2 3 4 5 |
dyn_var = 123 dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" dyn_var |
In dynamisch typisierten Sprachen steht es uns frei, eine vorhandene Variable wiederzuverwenden, um verschiedene Datentypen zu speichern. Hier wird das vorherige Beispiel aktualisiert, um dieses Phänomen zu demonstrieren:
|
1 2 3 4 5 6 7 |
dyn_var = 123 puts dyn_var dyn_var = 456.789 dyn_var = true dyn_var = "the quick brown fox" puts dyn_var dyn_var |
Wie dieses Beispiel zeigt, ändert sich jedes Mal, wenn ein neuer Wert zugewiesen wird, der Datentyp von dyn_var im laufenden Betrieb. Dies ist nützlich, wenn ein Datentyp in einen anderen konvertiert wird. Das folgende Beispiel demonstriert dies:
|
1 2 3 4 |
print "enter length: " length = gets.chop length = length.to_f puts length |
Hier,
-
Da Tastatureingaben Strings sind, ist length zunächst ein String.
-
Da unser gewünschter Wert ein Float ist, konvertieren wir den String-Wert in einen Float unter Verwendung der to_f-Methode.
-
Aufgrund der Wertänderung wird length der Datentyp Float zugewiesen. Das ist es, was wir sehen, wenn wir seinen Wert auf dem Bildschirm ausgeben.
Was würde passieren, wenn wir versuchen würden, zwei verschiedene Datentypen miteinander zu mischen? Ruby wird einen Fehler ausgeben. Sehen Sie selbst:
|
1 |
print 9 + "77" |
Datentyp-Identifikation
In Ruby wird alles als Objekt behandelt. Jedes Objekt in Ruby verfügt über die Methode class. Wenn sie aufgerufen wird, gibt diese Methode an, um welchen Datentyp es sich bei der Quelle handelt. Hier sind einige Beispiele für die Verwendung der class-Methode:
|
1 2 3 4 |
puts 55.class puts (55.55).class puts true.class puts nil.class |
Eine andere Möglichkeit, den Datentyp zu bestimmen, ist die Verwendung der kind_of?-Methode. Sie vergleicht den Datentyp des Objekts mit dem abgefragten Datentyp und gibt einen booleschen Wert zurück. Sehen Sie sich das im folgenden Beispiel an:
|
1 2 |
puts 55.kind_of?(Float) puts 55.kind_of?(Integer) |
Ebenso gibt es eine weitere Methode is_a?, die den Datentyp vergleicht und einen booleschen Wert zurückgibt. Der einzige Unterschied ist die Bezeichnung der Methode. Sie ist jedoch möglicherweise vorzuziehen, da sie für Entwickler etwas einfacher zu lesen und zu verstehen ist. Aktualisieren Sie das vorherige Beispiel mit is_a?:
|
1 2 |
puts 55.is_a?(Float) puts 55.is_a?(Integer) |
Fazit
Die Arbeit mit jeder Programmiersprache erfordert ein gutes Verständnis der von ihr unterstützten Datentypen. In diesem Leitfaden haben wir die gängigsten Datentypen untersucht, die in der Ruby-Programmierung verwendet werden. Wir haben Integers, Floats, Strings, Symbols, Booleans und Hashes besprochen und demonstriert (mit Beispielen).
Werfen Sie einen Blick auf weitere Tutorials aus unserem Blog, die Ihnen helfen, Ruby zu entdecken:
- Installation von Ruby on Rails mit RVM auf Ubuntu 20.04
- Einrichten von Ruby on Rails mit PostgreSQL
- Verwendung von MySQL mit einer Ruby on Rails-App auf Ubuntu 21.04
- Erkundung von CloudSigma PaaS: Wie nutzt man Ruby PaaS-Hosting-Dienste?
Viel Spaß beim Programmieren!




































Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.