On Apr 22, 6:15 pm, Daniel Finnie <d... / danfinnie.com> wrote:
> Hi,
>
> You can use super and/or alias:
>
> class MyHash < Hash
>   def [] key
>     super(key.downcase)
>   end
> end
>

But he asking for case-insensitivity.  If a key is created with
uppercase letters, you're out of luck.  And if you look for a value
for a non-string key, that's no good either:

###
class MyHash < Hash
  def [](key)
    super(key.downcase)
  end
end

h = MyHash.new
h['A'] = 'never findable'
h['A'] # => nil
h[1]   # ~> undefined method `downcase' for 1:Fixnum (NoMethodError)
###

You could override []= as well (and with more care), but I wonder if a
different class with a Hash instance variable with mediated access
would be a better route.

Chris