|
Du bist hier:
Hinterkattentuffel -
Ruby -
The ruby way Prev: Optionen |
|
Wir können jetzt also eine Kommandozeile parsen. Aber würde ein erfahrener Rubyentwickler das genauso machen? Nein, er würde annehmen, dass das schon zig Leute vor ihm gemacht haben und dass es ein entsprechendes Modul gibt. Und er hätte recht: Das Modul heißt in diesem Falle getoptlong und seine Verwendung ist unter getoptlong in einer Datei getoptlong.doc erläutert. Wer Angst vor Makroviren hat: Die Datei muss nicht mit Word geöffnet werden, Wordpad reicht. Wer das Buch "Programmieren mit Ruby" besitzt, hat sich vielleicht eh über unser letztes Skript gewundert. In den Appetithappen gibt es nämlich einen Einzeiler, der unter Unix unser gesamtes Skript ersetzt: # ersetze foo durch bar in C-Dateien # Sicherungskopie in .bak-Dateien ruby -i.bak -pe 'gsub "foo", "bar"' *.[ch] Eine Beschreibung der verwendeten Optionen liefert ruby -h. In der Tat lässt sich diese Zeile so anpassen, dass sie auch unter Windows tut. Um in etwa das Programmverhalten von filesed Version 0.1 zu erreichen, kann man einfach das folgende ausführen: CMD>ruby -i.bak -pe "gsub ""<br.*>"",""<br>""" *.htm* Das filesed-Skript dokumentiert also noch nicht, wie man die Aufgabe als erfahrener Rubyprogrammierer löst. Das ist aber auch zunächst gar nicht beabsichtigt. Ruby lernt man nur durch Ausprobieren und dies auch nur dann, wenn das Probieren von Erfolg gekrönt ist. Mit der Erfahrung kommt dann die Eleganz und der eigene Stil. Wenn dieser dann dem "ruby way" entspricht - um so besser! Ruby besitzt eine Menge syntaktischen Zucker und ermöglicht damit Annäherungen an den Stil anderer Programmiersprachen. Wer von Perl oder Smalltalk kommt, wird gegen das Weglassen von Funktionsklammern vermutlich weniger Einwände haben als eingefleischte C++-Freaks. Umgekehrt sind auch Schreibweisen möglich, die stark an die Sprachen der C-Familie erinnern und so auch den Umstieg von Java-Programmierern beschleunigen. Ein gutes Beispiel für diese Offenheit sind die Funktionsaliasse. Das Modul Enumerable kennt sowohl das aus Smalltalk bekannte "detect" als auch das in der C++ Standard Template Library verwendete "find". Implementiert wird soetwas einfach über alias nameEinerVorhandenenMethode weitererNameFürDieMethode. |
| Next: Windows Objekte nutzen |