Script-Tip: Hash mit Standardrückgabewert

Wenn bei der Benutzung von Hashes ein Standardwert anstatt von nil zurückgegeben werden soll, gibt es zwei Möglichkeiten wie das erreicht werden kann.

Das normale Verhalten bei einem Hash sieht folgendermaßen aus:

[ruby]
h = Hash.new # eine neue Hashinstanz erzeugen
h[5] # => gibt nil zurück
h[‚mein-index‘] # => gibt auch nil zurück
[/ruby]

Bei der ersten Variante für die Rückgabe von Standardwerten kann über den Konstruktor gelöst werden:

[ruby]
h = Hash.new("DEFAULT_VALUE") # eine neue Hashinstanz erzeugen
h[5] # => gibt "DEFAULT_VALUE" zurück
h[‚mein-index‘] # => gibt auch "DEFAULT_VALUE" zurück
[/ruby]

Die zweite Variante wird über einen Rückgabeblock gelöst:

[ruby]
h = Hash.new {|hash, key| (key.respond_to? :to_str) ? "DEFAULT_VALUE" : nil }
h[5] # => gibt nil zurück
h[‚mein-index‘] # => gibt "DEFAULT_VALUE" zurück
[/ruby]

Die beiden Varianten unterscheiden sich dadurch, dass nur bei fehlenden String-Indixes der Statndardwert zurückgegeben wird.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.