Speriamo di non aver frainteso il significato di "digitazione anatra", ma da quello che ho letto, significa che dovrei scrivere codice basato su come un oggetto risponde ai metodi piuttosto che tipo/classe.Posso migliorare questo metodo con la digitazione anatra?
Ecco il codice:
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
Quello che voglio è fare in modo che io alla fine con un hash in cui le chiavi sono un numero intero che rappresenta l'ID di un oggetto ActiveRecord. Non mi piace particolarmente dover ripetere le chiavi di hash due volte con all?
per determinare se è necessario prelevare l'ID.
Naturalmente, io accetterò altri suggerimenti per migliorare questo codice così :)
mai nemmeno sentito parlare di "duck typing" prima. Dove l'hai incontrato? –
@Brian, http://en.wikipedia.org/wiki/Duck_typing –