Ruby Variablen
Eine Variable ist ein Speicherort, der beliebige Daten aufnehmen kann, die von jedem Programm verwendet werden können.
Ruby unterstützt fünf Arten von Variablen.
- Beginnen im Allgemeinen mit Kleinbuchstaben oder Unterstrichen: Variable (Variable).
$$ am Anfang: globale Variable (Global variable).@@ am Anfang: Instanzvariable (Instance variable).@@@@ am Anfang: Klassenvariable (Class variable). Klassenvariablen werden über die gesamte Vererbungskette hinweg geteilt.- Beginnen mit einem Großbuchstaben: Konstante (Constant).
Sie haben diese Variablen bereits in vorherigen Kapiteln kennengelernt. In diesem Kapitel werden diese fünf Arten von Variablen ausführlich erklärt.
Globale Variablen in Ruby
Der Wert einer nicht initialisierten globalen Variablen ist nilnil, und die Verwendung der Option -w erzeugt eine Warnung.
Das Zuweisen eines Werts an eine globale Variable ändert den globalen Zustand, daher sind globale Variablen nicht empfehlenswert.
Das folgende Beispiel zeigt die Verwendung globaler Variablen.
Beispiel
Ausprobieren »
Hier ist $global_variable eine globale Variable. Dies erzeugt das folgende Ergebnis:
Hinweis:In Ruby können Sie auf den Wert jeder Variablen oder Konstante zugreifen, indem Sie das Zeichen # vor die Variable oder Konstante setzen.
全局变量在 Class1 中输出为 10 全局变量在 Class2 中输出为 10
Ruby-Instanzvariablen
Instanzvariablen beginnen mit @. Der Wert einer nicht initialisierten Instanzvariable ist nilnil, und die Verwendung der Option -w erzeugt eine Warnung.
Das folgende Beispiel zeigt die Verwendung von Instanzvariablen.
Beispiel
Ausprobieren »
Hier sind @cust_id, @cust_name und @cust_addr Instanzvariablen. Dies erzeugt das folgende Ergebnis:
Customer id 1 Customer name John Customer address Wisdom Apartments, Ludhiya Customer id 2 Customer name Poul Customer address New Empire road, Khandala
Ruby-Klassenvariablen
Klassenvariablen beginnen mit @@ und müssen initialisiert werden, bevor sie in Methodendefinitionen verwendet werden können.
Das Referenzieren einer nicht initialisierten Klassenvariable erzeugt einen Fehler. Klassenvariablen können in Unterklassen oder Untermodulen der Klasse oder des Moduls, in der bzw. dem sie definiert sind, gemeinsam genutzt werden.
Nach der Verwendung der Option -w erzeugt das Neudefinieren einer Klassenvariable eine Warnung.
Das folgende Beispiel zeigt die Verwendung von Klassenvariablen.
Beispiel
Ausprobieren »
Hier ist @@no_of_customers eine Klassenvariable. Dies erzeugt das folgende Ergebnis:
Total number of customers: 1 Total number of customers: 2
Lokale Variablen in Ruby
Lokale Variablen beginnen mit einem Kleinbuchstaben oder einem Unterstrich _. Der Gültigkeitsbereich einer lokalen Variablen reicht von class, module, def oder do bis zum entsprechenden end oder von der linken geschweiften Klammer bis zur rechten geschweiften Klammer {}.
Wenn eine nicht initialisierte lokale Variable aufgerufen wird, wird dies als Aufruf einer Methode ohne Argumente interpretiert.
Das Zuweisen eines Werts zu einer nicht initialisierten lokalen Variablen kann auch als Variablendeklaration angesehen werden. Die Variable bleibt bis zum Ende des aktuellen Gültigkeitsbereichs bestehen. Die Lebensdauer einer lokalen Variablen wird bestimmt, wenn Ruby das Programm parst.
Im obigen Beispiel sind die lokalen Variablen id, name und addr.
Ruby-Konstanten
Konstanten beginnen mit einem Großbuchstaben. Auf Konstanten, die innerhalb einer Klasse oder eines Moduls definiert sind, kann innerhalb der Klasse oder des Moduls zugegriffen werden, während auf Konstanten, die außerhalb einer Klasse oder eines Moduls definiert sind, global zugegriffen werden kann.
Konstanten können nicht innerhalb von Methoden definiert werden. Das Referenzieren einer nicht initialisierten Konstante erzeugt einen Fehler. Das Zuweisen eines Werts zu einer bereits initialisierten Konstante erzeugt eine Warnung.
Beispiel
Ausprobieren »
Hier sind VAR1 und VAR2 Konstanten. Dies ergibt das folgende Ergebnis:
第一个常量的值为 100 第二个常量的值为 200
Ruby-Pseudovariablen
Sie sind spezielle Variablen, die wie lokale Variablen aussehen, sich aber wie Konstanten verhalten. Sie können diesen Variablen keinen Wert zuweisen.
- self:Das Empfängerobjekt der aktuellen Methode.
- true:Repräsentiert den Wert true.
- false:Repräsentiert den Wert false.
- nil:Repräsentiert den Wert undefined.
- __FILE__:Der Name der aktuellen Quelldatei.
- __LINE__:Die Zeilennummer der aktuellen Zeile in der Quelldatei.