19 lines
799 B
Markdown
19 lines
799 B
Markdown
|
# Hashes und Blöcke
|
||
|
|
||
|
📆 **Fällig: ----** 📆 [Musterlösung](solution/)
|
||
|
|
||
|
Realisieren Sie einen einfachen _Cache_ mit Hilfe von _Hashes_. Schreiben Sie hierzu eine Klasse `Cache`.
|
||
|
|
||
|
Die Klasse `Cache` hat eine Methode zum Hinzufügen von Elementen (`add`) und eine zum Auslesen (`[]`), wobei jeweils ein String als Schlüssel verwendet wird.
|
||
|
|
||
|
Wenn ein Element nicht enthalten sein sollte, liefert die Methode `[]` nicht `nil` zurück, sondern ruft einen Block auf, der im Konstruktor der Klasse übergeben wurde. Diese Block beschafft die Daten und gibt sie zurück.
|
||
|
|
||
|
Eine beispielhafte Benutzung sähe dann wie folgt aus:
|
||
|
|
||
|
```ruby
|
||
|
c = Cache.new { |key| "Neuer Wert für key #{key}" }
|
||
|
c.add 'key1', 'value1'
|
||
|
c.add 'key2', 'value2'
|
||
|
puts c['key1'] # -> 'value1'
|
||
|
puts c['key3'] # -> 'Neuer Wert'
|
||
|
```
|