Die Programmiersprache Ruby

Blog| Forum| Wiki  

Ein Kommentar ist ein Text, der Informationen zum Programmcode enthält, aber nicht ausgewertet wird, da ihn der Interpreter/Compiler einfach "überliest".

Inhaltsverzeichnis

Einzeilige Kommentare

In Ruby werden einzeilige Kommentare mit dem Routen-Zeichen # begonnen. Sie können sowohl am Zeilenanfang wie auch hinter einem Ausdruck stehen.

1
2
3
a = 0 #Hier wird a der Wert 0 zugewiesen
#Jetzt wird a um 1 erh��ht: 
a += 1

Mehrzeilige Kommentare

Eine nicht ganz so bekannte Kommentarvariante ist der Blockkommentar (auch mehrzeiliger Kommentar). Mit ihm können gleich ganze Abschnitte auskommentiert werden. Er besitzt jedoch eine Beschränkung: Whitespace vor dem Gleichzeichen verursacht einen SyntaxError.

1
2
3
4
5
6
7
8
9
=begin
Es ist sehr wichtig, 
der Variablen a den 
Wert 0 zuzuweisen, deshalb
gebe ich ihr zur Information 
gleich einen ganzen Kommentar-
Block mit. Und hier ist der Code: 
=end
a = 0

dont do

Eine etwas eigenwillige, aber nichtsdestotrotz nützliche Variante, mehrzeilige Kommentare zu erstellen, ist von murphy auf der Ruby-Mine vorgestellt worden:

1
2
3
4
5
6
7
8
9
10
11
12
module Kernel
  # Ignores its optional block.
  def dont
  end
end

class Foo
  #module KurpW
  dont do
    Version = 08.17
  end
end

Shebang

In unixoiden Betriebssystem besteht die Möglichkeit, ein Skript direkt durch seinen Namen auszuführen, wenn es Ausführrechte besitzt und die erste Zeile eine Shebang-Line ist. Eine Shebang-Zeile beginnt immer mit der Zeichenkombination #!, was in Ruby kein tiefgreifenderes Problem ist, da # ja ohnehin für Kommentare, also vom Interpreter ignorierte Zeilen, steht. Normalerweise sähe der Aufruf eines Ruby-Skriptes wie folgt aus:
ruby mein_skript.rb

Mithilfe der Shabang-Zeile kann man die Interpreterangabe weglassen, sodass es nur noch heißt:

./mein_skript.rb

In der Shebang-Zeile wird der Pfad zum Interpreter angegeben, z.B. /usr/local/bin/ruby:

1
2
#!/usr/local/bin/ruby
puts "Ein Test"

Portabilität

Nicht jeder hat Ruby an der gleichen Stelle im System installiert. Würde man dieses Skript jemandem geben, der Ruby z.B. in /home/benutzername/meine_programmiersprachen/ruby installiert hat, schlüge es fehl (außer er hat einen Symlink in /usr/local/bin mit dem Namen ruby). Daher gibt es das Programm env, das anhand der PATH-Umgebungsvariablen den Pfad z.B. des Ruby-Interpreters festzustellen versucht. Eine etwas portablere Variante der obigen Shebang-Zeile wäre also:

#!/usr/bin/env ruby

Aber auch dies ist nicht 100%ig sicher, da das Programm env nicht zwangsläufig in /usr/bin liegen muss. Eine weitere Schwierigkeit stellen verschiedene Ruby-Versionen da. Falls jemand mehrere Ruby-Versionen installiert hat, und sie beispielsweise ruby18, ruby19 und rubydev genannt hat (und somit nicht einmal "ruby" so vorkommt), wird dies ebenfalls fehlschlagen.

RDOC-Formatierungsanweisungen

Außer dem standardmäßigen "Infos-in-Code-schreiben" gibt es ja auch noch RDoc, das Ruby-Dokumentationstool. Es gibt verschiedene Anweisungen, die man in die eigenen Kommentare hineinsschreiben und anschließend mit
$ rdoc meine_datei.rb
auswerten kann. Dies wird im Artikel RDoc behandelt.

Änderungen an Kommentaren zu Ruby 1.9

So sieht's aus: Auch die Kommentare kommen bei Ruby 1.9.1 nicht ungeschoren davon. Neuerdings muss man die Kodierung einer Datei angeben, falls man Nicht-ASCII-Zeichen verwenden will, und zwar mithilfe eines Magic Comment.

1
2
puts "��"
#=> invalid multibyte char (US-ASCII)

Ein »Magischer Kommentar« nun gibt die Kodierung an; je nach Programm wird eine Datei (wenn nicht explizit umgestellt) in einem anderen Encoding abgespeichert. Für viele Windows-Programme wäre das Windows-1252, für viele Linux-Pendanten ISO-8859-1. Wer alle Unicode-Zeichen benutzen will, greift zu UTF-8, muss dann aber auch sicherstellen, dass die Datei tatsächlich in UTF-8 abgespeichert wird, da es zu Fehlfunktionen führt, wenn der Magische Kommentar eine andere Kodierung angibt, als die Datei tatsächlich besitzt.

1
2
3
#Encoding: UTF-8
puts "��"
#=> ��

Ein Magischer Kommentar muss zudem immer als 1. Zeile oder, falls eine Shebang-Zeile vorliegt, als 2., definiert werden. Encoding.list gibt alle verfügbaren Kodierungen aus, die da wären:

ASCII-8BIT
UTF-8
US-ASCII
Big5
CP949
Emacs-Mule
EUC-JP
EUC-KR
EUC-TW
GB18030
GBK
ISO-8859-1
ISO-8859-2
ISO-8859-3
ISO-8859-4
ISO-8859-5
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
ISO-8859-10
ISO-8859-11
ISO-8859-13
ISO-8859-14
ISO-8859-15
ISO-8859-16
KOI8-R
KOI8-U
Shift_JIS
UTF-16BE
UTF-16LE
UTF-32BE
UTF-32LE
Windows-1251
IBM437
IBM737
IBM775
CP850
IBM852
CP852
IBM855
CP855
IBM857
IBM860
IBM861
IBM862
IBM863
IBM864
IBM865
IBM866
IBM869
Windows-1258
GB1988
macCentEuro
macCroatian
macCyrillic
macGreek
macIceland
macRoman
macRomania
macThai
macTurkish
macUkraine
stateless-ISO-2022-JP
eucJP-ms
CP51932
GB2312
GB12345
ISO-2022-JP
ISO-2022-JP-2
Windows-1252
Windows-1250
Windows-1256
Windows-1253
Windows-1255
Windows-1254
TIS-620
Windows-874
Windows-1257
Windows-31J
MacJapanese
UTF-7
UTF8-MAC

Siehe auch