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:

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

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

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

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

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

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

Eingestellt am 17.02.2010 um 15:13

Kategorie: Tutorials

Be Sociable, Share!

Kommentare für diesen Artikel wurden geschlossen.

Suchen auf rubyonrails.de

Aktuelle Rails Version + Abhängigkeiten:

Gem rails-3.0.0
actionmailer (= 3.0.0, runtime)
actionpack (= 3.0.0, runtime)
activerecord (= 3.0.0, runtime)
activeresource (= 3.0.0, runtime)
activesupport (= 3.0.0, runtime)
bundler (~> 1.0.0, runtime)
railties (= 3.0.0, runtime)

Rails auf Rubyforge
Rails auf Github