Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
zu definieren. Schreiben Sie hinter das Schlüsselwort
def
einfach einen Ausdruck, der ein Objekt ergibt. Auf diesen Ausdruck sollten ein Punkt und der Name der zu definierenden Methode folgen. Die resultierende Methode wird Singleton-Methode genannt, weil sie nur für ein einzelnes Objekt verfügbar ist:
o = "Meldung" # Ein String ist ein Objekt.
def o.printme # Singleton-Methode für dieses Objekt definieren
puts self
end
o.printme # Singleton-Methode aufrufen
    Klassenmethoden (behandelt in Kapitel 7 ) wie
Math.sin
und
File.delete
sind eigentlich Singleton-Methoden.
Math
ist eine Konstante, die auf ein
Module
-Objekt verweist, und
File
ist eine Konstante, die auf ein
Class
-Objekt verweist. Diese beiden Objekte haben Singleton-Methoden namens
sin
beziehungsweise
delete
.
    Ruby-Implementierungen behandeln
Fixnum
- und
Symbol
-Werte üblicherweise wie unmittelbare Werte und nicht wie echte Objektreferenzen (siehe „3.8.1.1 Unmittelbare Werte“ ). Aus diesem Grund können keine Singleton-Methoden für
Fixnum
- und
Symbol
-Objekte definiert werden. Aus Konsistenzgründen sind Singletons auch für andere
Numeric
-Objekte verboten.
    6.1.5 Methodendefinitionen aufheben
    Methoden werden mit der Anweisung
def
definiert, und mit der Anweisung
undef
können Sie die Definition aufheben:
def sum(x,y); x+y; end # Eine Methode definieren
puts sum(1,2) # Methode verwenden
undef sum # und die Definition aufheben
    In diesem Code definiert die
def
-Anweisung eine globale Methode, und
undef
hebt ihre Definition auf.
undef
funktioniert auch innerhalb von Klassen (die das Thema von Kapitel 7 sind), um die Definition der Instanzmethoden der jeweiligen Klasse aufzuheben. Interessanterweise kann
undef
verwendet werden, um die Definition geerbter Methoden aufzuheben, ohne die Definition der Methode in derjenigen Klasse zu beeinflussen, aus der sie übernommen wurde. Angenommen, Klasse
A
definiert eine Methode
m
, und
B
ist eine Unterklasse von
A
und erbt daher
m
. (Unterklassen werden ebenfalls in Kapitel 7 behandelt.) Wenn Sie Instanzen der Klasse
B
nicht erlauben möchten,
m
aufzurufen, können Sie im Rumpf der Unterklasse
undef m
verwenden.
    undef
ist keine häufig verwendete Anweisung. In der Praxis kommt es häufiger vor, dass eine Methode mit einer neuen
def
-Anweisung umdefiniert wird, als dass die Methodendefinition aufgehoben oder gelöscht wird.
    Beachten Sie, dass auf die Anweisung
undef
ein einzelner Bezeichner folgen muss, der den Methodennamen angibt. Sie kann nicht auf dieselbe Weise verwendet werden, um die Definition einer Singleton-Methode aufzuheben, wie
def
zur Definition einer solchen Methode verwendet wird.
    Innerhalb einer Klasse oder eines Moduls können Sie auch
undef_method
(eine private Methode von
Module
) verwenden, um Methodendefinitionen aufzuheben. Übergeben Sie ein Symbol, das den Namen der Methode darstellt, deren Definition aufgehoben werden soll.

6.2 Methodennamen
    Konventionsgemäß beginnen Methodennamen mit einem Kleinbuchstaben. (Methodennamen dürfen mit einem Großbuchstaben beginnen, aber dann sehen sie so aus wie Konstanten.) Wenn ein Methodenname länger als ein Wort ist, besteht die allgemeine Konvention darin, die Wörter durch Unterstriche zu trennen
wie_hier
anstatt gemischte Groß- und Kleinschreibung zu verwenden
wieHier
.
    ----
    Methodennamensauflösung
    Dieser Abschnitt beschreibt die Namen, die Sie Methoden bei ihrer Definition geben. Ein verwandtes Thema ist die Methodennamensauflösung: Wie findet der Ruby-Interpreter die Definition der in einem Methodenaufrufausdruck angegebenen Methode? Die Antwort auf diese Frage muss warten, bis wir Klassen in Ruby besprochen haben. Sie wird in „7.8 Methoden-Lookup“ behandelt.
    ----
    Methodennamen können (müssen aber nicht) mit einem Gleichheitszeichen, einem Fragezeichen oder einem Ausrufezeichen enden. Ein Gleichheitszeichensuffix weist darauf hin, dass die Methode ein Setter ist, der mithilfe von Wertzuweisungssyntax aufgerufen werden kann. Setter-Methoden werden in „4.5.3 Wertzuweisung an Attribute und Array-Elemente“ beschrieben, und zusätzliche Beispiele finden sich in „7.1.5 Akzessoren und Attribute“ . Die Suffixe Fragezeichen und Ausrufezeichen haben keine spezielle Bedeutung für den Ruby-Interpreter, aber sie sind erlaubt, weil sie zwei außerordentlich nützliche Namenskonventionen zulassen.
    Die erste Konvention ist, dass jede Methode, deren Name mit einem Fragezeichen endet, einen Wert zurückliefert, der eine durch

Weitere Kostenlose Bücher