Die Programmiersprache Ruby (German Edition)
dasselbe Zeichen darstellt. In Ruby wird keine Unicode-Normalisierung durchgeführt, und zwei verschiedene Codepunkte werden als unterschiedliche Zeichen behandelt, selbst dann, wenn sie dieselbe Bedeutung haben oder durch dasselbe Zeichen im Zeichensatz dargestellt werden.
Zeichensetzung in Bezeichnern
Am Anfang und am Ende von Ruby-Bezeichnern können bestimmte Satzzeichen vorkommen. Sie haben folgende Bedeutungen:
$
Globale Variablen haben ein Dollarzeichen als Präfix. Nach dem Beispiel von Perl definiert Ruby eine Anzahl globaler Variablen, die andere Satzzeichen enthalten, etwa
$_
und
$-K
. In Kapitel 10 finden Sie eine Liste dieser speziellen Variablen.
@
Instanzvariablen haben ein At-Zeichen als Präfix, Klassenvariablen zwei von ihnen. Instanz- und Klassenvariablen werden in Kapitel 7 erläutert.
?
Einer hilfreichen Konvention gemäß haben Methoden, die booleschen Werte zurückgeben, oft Namen, die mit einem Fragezeichen enden.
!
Methodennamen können mit einem Ausrufezeichen enden, um anzuzeigen, dass sie mit Vorsicht eingesetzt werden sollten. Diese Namenskonvention unterscheidet oft Mutator-Methoden, die das Objekt verändern, für das sie aufgerufen wurden, von Varianten, die eine modifizierte Kopie des Originalobjekts zurückgeben.
=
Methoden, deren Namen mit einem Gleichheitszeichen enden, können aufgerufen werden, indem der Methodenname ohne das Gleichheitszeichen auf der linken Seite eines Zuweisungsoperators platziert wird. (Mehr darüber können Sie in „4.5.3 Wertzuweisung an Attribute und Array-Elemente“ und „7.1.5 Akzessoren und Attribute“ lesen.)
Hier sehen Sie einige Bezeichnerbeispiele, die führende oder abschließende Satzzeichen enthalten:
$files # Eine globale Variable
@data # Eine Instanzvariable
@@counter # Eine Klassenvariable
empty? # Eine Methode mit Boolean-Rückgabewert, oder Prädikat
sort! # Mutator-Alternative der normalen sort-Methode
timeout= # Eine Methode, die durch Wertzuweisung aufgerufen wird
Viele Ruby-Operatoren werden als Methoden implementiert, so dass Klassen sie für ihre eigenen Zwecke neu definieren können. Daher ist es möglich, auch bestimmte Operatoren als Methodennamen zu verwenden. In diesem Kontext werden das oder die Satzzeichen des Operators als Bezeichner statt als Operatoren behandelt. Siehe „4.6 Operatoren“ für Einzelheiten über Rubys Operatoren.
2.1.5 Schlüsselwörter
Die folgenden Schlüsselwörter haben in Ruby spezielle Bedeutungen und werden durch den Ruby-Parser speziell behandelt:
__LINE__ case ensure not then
__ENCODING__ class false or true
__FILE__ def for redo undef
BEGIN defined? if rescue unless
END do in retry until
alias else module return when
and elsif next self while
begin end nil super yield
break
Zusätzlich zu diesen Schlüsselwörtern gibt es drei schlüsselwortartige Token, die vom Ruby-Parser speziell behandelt werden, wenn sie am Anfang einer Zeile stehen:
=begin =end __END__
Wie wir gesehen haben, begrenzen
=begin
und
=end
am Anfang einer Zeile mehrzeilige Kommentare. Und das Token
__END__
markiert das Ende des Programms (und den Beginn einer Datensektion), wenn es ohne führenden oder abschließenden Whitespace für sich in einer Zeile steht.
In den meisten Sprachen heißen diese Wörter »reservierte Wörter« und wären niemals als Bezeichner erlaubt. Der Ruby-Parser ist flexibel und beschwert sich nicht, wenn Sie diesen Schlüsselwörtern die die Präfixe
@
,
@@
oder
$
voranstellen und sie so als Namen für Instanz-, Klassen- beziehungsweise globale Variablen verwenden. Außerdem können Sie diese Schlüsselwörter als Methodennamen verwenden, allerdings nur, wenn die entsprechende Methode stets explizit über ein Objekt aufgerufen wird. Beachten Sie jedoch, dass die Verwendung dieser Schlüsselwörter in Bezeichnern verwirrenden Code erzeugen wird. Die beste Lösung besteht darin, diese Schlüsselwörter als reserviert zu behandeln.
Viele wichtige Features der Sprache Ruby sind in Wirklichkeit als Methoden der Klassen
Kernel
,
Module
,
Class
und
Object
implementiert. Daher ist es eine gute Idee, auch die folgenden Bezeichner als reservierte Wörter zu betrachten:
# Dies sind Methoden, die Anweisungen oder Schlüsselwörter zu sein scheinen.
at_exit catch private require
attr include proc throw
attr_accessor lambda protected
attr_reader load public
attr_writer loop raise
# Dies sind häufig verwendete globale Funktionen.
Array chomp! gsub! select
Float chop iterator? sleep
Integer chop! load
Weitere Kostenlose Bücher