Hoffentlich habe ich nicht die Bedeutung von "Ente tippen" missverstanden, aber von dem, was ich gelesen habe, bedeutet es, dass ich Code basierend darauf, wie ein Objekt auf Methoden und nicht auf welchen Typ/Klasse es ist, schreiben sollte.Kann ich diese Methode mit der Eingabe von Enten verbessern?
Hier ist der Code:
def convert_hash(hash)
if hash.keys.all? { |k| k.is_a?(Integer) }
return hash
elsif hash.keys.all? { |k| k.is_a?(Property) }
new_hash = {}
hash.each_pair {|k,v| new_hash[k.id] = v}
return new_hash
else
raise "Custom attribute keys should be ID's or Property objects"
end
end
Was ich will, ist sicher zu stellen, dass ich mit einem Hash am Ende, wo die Tasten sind eine ganze Zahl die ID eines Active Objekt darstellt. Es macht mir nicht besonders viel Spaß, die Hash-Schlüssel zweimal mit all?
durchlaufen zu müssen, um festzustellen, ob ich die IDs rausholen muss.
Natürlich, ich werde andere Vorschläge akzeptieren auch diesen Code zu verbessern :)
noch nie von "Duck Typing" schon einmal gehört. Wo bist du auf das gestoßen? –
@Brian, http://en.wikipedia.org/wiki/Duck_typing –