![]() |
|
Will man das Beispiel ohne Verwendung von Complex implementieren, so muss stattdessen das das Modul Math eingebunden werden. Nützlich können in diesem Fall Doppelzuweisungen sein:
![]() |
|
Zum Thema Kapselung (darum ging es wohl in dem Beispiel?) ist zu sagen, dass es in Ruby auch noch das Schlüsselwort protected gibt. Die Interpretation ist leicht anders als etwa in SpracheJava. Nachzulesen in dem für Anfänger empfehlenswerten Buch Programmieren mit Ruby von Armin Röhrl, StefanSchmiedl und Clemens Wyss, welches auch online verfügbar ist: http://www.ruby.ch/en/rubymain.shtml. Ruby ist dynamisch typisiert, d. h. auch die Methodenkapselung kann nur dynamisch überprüft werden. Das Durchbrechen der Kapselung führt zu einem Laufzeitfehler.
Zugriffsmethoden auf Instanzvariablen können en block definiert werden. Das kann sogar nachträglich (dynamisch) erfolgen:
![]() |
|
In Ruby können sogar einzelnen Instanzen Methoden und damit implizit auch Instanzvariablen zugefügt werden!
To Do: Regressionstest; Idee: Eine Instanz der Klasse erstellen und dieser eine Methode #rand geben. Für die neue Instanz überschreibt #rand das Kernel#rand und liefert nicht Zufallszahlen sondern eine vorgegebenen Folge von Testzahlen.
Noch ein paar Bemerkungen zum Thema Zufallszahlen in Ruby.
Die oben verwendete Kernel-Methode rand ist je nach Anforderung an die Qualität einer Zufallszahl nicht immer geeignet. Im Ruby-Archiv RAA gibt es mit RandomR (in der Kategorie Math) einen weiteren Zufallszahlengenerator, der auf einer C-Implementation namens Mersenne Twister basiert.
Einige nützliche Hinweise zur Verwendung von Zufallszahlen gibt der Ruby Developer's Guide, an dem neben den Autoren Robert Feldt und Lyle Johnson auch Michael Neumann als Technical Editor mitgewirkt hat. Es gibt auch ein Ruby-Gem für EchteZufallsZahlen durch Zugriff auf entsprechende Webseiten http://www.maik-schmidt.de/realrand.html.
KategorieRuby KategorieProgrammierBeispiele