Syntax-Sonntag! Heute:
# Ich gehe bis zum Zeilenende. Eigentor.create :author => 'Petit' # ^_^ # Gibt eine zufällige natürliche Zahl zurück. def random_number 23 endRuby hat eine zweite, weniger bekannte Kommentar-Variante:
=begin = Mehrzeilige Kommentare * waren wohl ursprünglich für die Dokumentation vorgesehen * haben sich aber nicht durchgesetzt * man benutzt stattdessen RDoc-Kommentarblöcke mit vielen #. =end
Ziemlich unhandlich, wenn man einfach etwas auskommentieren möchte. Zudem kann man diese mehrzeiligen Kommentare nicht schachteln.
Häufig möchte man einen Ruby-Block ausklammern – ein if, ein def, eine Klasse. Wie macht man das am einfachsten?
=begin...=end halte ich für ungeeignet, schon weil man die Kommentarbegrenzer nicht einrücken darf:
class Foo =begin def bar @baz.quux =end endTextMate-Benutzer markieren einfach den linken Rand der Methode und drücken
#. Aber man möchte nicht immer auf die Maus wechseln.
class Foo #def bar # @baz.quux #end endWie wäre es denn mit Fancy Strings?
class Foo %q(def bar @baz.quux end) end
Funktioniert, sieht aber doof aus und verwirrt manche Editoren.
def. Benutzen wir also einfach den if-Modifier:
class Foo def bar @baz.quux end if false endDie Methode
bar wird somit nie erzeugt, weil Ruby den Block vor if false nicht beachtet (die Syntax wird aber trotzdem überprüft!) Es gibt noch Varianten:
class Foo def bar @baz.quux end unless true module KurpW Version = 08.15 end if() end
() ist eine andere Schreibweise für nil; if() macht genau dasselbe wie if false.
class Foo if() #module KurpW Version = 08.16 end end
Voilà ! Zu An- und Ausschalten einfach die Raute umsetzen.
“if()” ist nicht sehr verständlich, sondern eher ein weiteres komisches Metallteil im Werkzeugkasten der Obfuscatoren.
Ruby-Programmierer möchten schreiben:class Foo #module KurpW dont do Version = 08.17 end endKein Problem:
module Kernel # Ignores its optional block. def dont end end
Editor-freundlich, lesbar, schachtelbar. Ruby erweitert um exzellente Block-Auskommentierung via Vierzeiler.
Wusstet ihr übrigends, dass die Verwendung der Raute (#) als Kommentarzeichen bereits aus ALGOL 68 stammt?
Kommentar schreiben
Kommentare
Sehr schön! Ich finde bei "dont do" auch sehr schön dass die Syntax gecheckt wird. Es ist manchmal sehr ärgerlich wenn man Code ausklammert, dabei irgendwas im Code versehentlich verändert, es nicht merkt und sich später nur noch wundert. PS: Schön mal wieder an Algol68 erinnert zu werden. Da konnte man sich ja auch fast alles so zurecht definieren wie man wollte.