Что может быть последствия обезьяны ремонтного Hash, чтобы действовать так:обезьяна латание Руби Hash класс
class Hash
def method_missing(method,*args, &block)
if self.has_key?(method)
return self[method]
elsif self.has_key?(method.to_s)
return self[method.to_s]
else
return nil
end
end
end
Мое оправдание заключается в следующем:
В принципе, когда я добавить объекты в хэши, я делаю уверен, что их keys.to_s уникальны.
Должен ли я быть обеспокоен, я что-то упустил?
h = { :foo => "bar", "hello" => "bar" }
h.foo => "bar"
h.hello => "bar"
Почему вы не используете 'HashWithIndifferentAccess'? –
Кроме того, я не знал о классе :-), ActiveSupport :: HashWithIndifferentAccess :: HashWithIndifferentAccess требует рельсов. Кроме того, он не разрешает «точечные геттеры» (h.foo, который быстрее вводить, чем h ["foo"] и h [: foo]) – Abdo
«Быстрее набирать» - очень плохая причина для реализации этого ... –