Class: BoundedHash
- Inherits:
-
Object
- Object
- BoundedHash
- Defined in:
- lib/bounded_hash.rb
Instance Method Summary collapse
- #[](k) ⇒ Object
- #[]=(k, v) ⇒ Object
- #ensure_bounds ⇒ Object
-
#initialize(size_limit) ⇒ BoundedHash
constructor
A new instance of BoundedHash.
Constructor Details
#initialize(size_limit) ⇒ BoundedHash
Returns a new instance of BoundedHash.
3 4 5 6 7 8 9 |
# File 'lib/bounded_hash.rb', line 3 def initialize(size_limit) @size_limit = size_limit @values = Hash.new # stores user-supplied mappings @next_entry_id = 0 @entries = Hash.new # maps entry ids to keys. lower ids = older keys. self end |
Instance Method Details
#[](k) ⇒ Object
11 12 13 |
# File 'lib/bounded_hash.rb', line 11 def [] (k) @values[k] end |
#[]=(k, v) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/bounded_hash.rb', line 15 def []= (k, v) @values[k] = v @entries[@next_entry_id += 1] = k ensure_bounds self end |
#ensure_bounds ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/bounded_hash.rb', line 22 def ensure_bounds while @values.length > @size_limit do i = @entries.keys.min @values.delete(@entries[i]) @entries.delete(i) end end |