> Regarde (ou utilise) la classe OrderedOptions qui utilise method_missing.
Un exemple vaut mieux qu'un long baratin:
class Setting < HashWithIndifferentAccess
def method_missing(method)
key?(method) ? self[method] : super
end
end
s = Setting.new({:toto => '1', 'tata' => 2, 'key?' => 'tata'})
>> s.toto
=> "1"
>> s.tata
=> 2
Avec les drawbacks
#method qui existe déjà
>> s.key?
ArgumentError: wrong number of arguments (0 for 1)
from (irb):11:in `key?'
from (irb):11
#clée absente
>> s.not_a_key
NoMethodError: undefined method `not_a_key' for Settings
from /Users/nel/ruby/feedback/vendor/heywatch-0.0.1/lib/heywatch/
ext.rb:46:in `method_missing'
from (irb):3:in `method_missing'
from (irb):12
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---