>> a = 5
=> 5
>> b = "hello, world!"
=> "hello, world!"
>> b.dup
=> "hello, world!"
>> a.dup
TypeError: can't dup Fixnum
from (irb):4:in `dup'
from (irb):4
Capisco che Ruby eseguirà una copia ogni volta che assegni un numero intero a una nuova variabile, ma perché Numeric#dup
genera un errore?Perché i numeri non supportano .dup?
Non romperebbe l'astrazione, dal momento che tutti gli oggetti dovrebbero rispondere correttamente a .dup
?
Riscrivere il metodo dup
risolverà il problema, per quanto posso dire:
>> class Numeric
>> def dup()
>> self
>> end
>> end
cosa questo ha un rovescio della medaglia non sto vedendo? Perché questo non è incorporato in Ruby?
ActiveSupport, not Rails, fornisce il metodo 'duplicable?'.Quindi puoi semplicemente installare ActiveSupport e richiederlo ('richiede 'active_support'') se vuoi che (e molti altri) metodi di utilità. – henrikhodne
Infatti. Aggiornato. –
Il link deve essere sostituito da https://bugs.ruby-lang.org/issues/1844. Inoltre, la funzione è stata rifiutata perché non sono stati fatti progressi, a quanto pare. –