Per esempio:Julia: come evitare modifiche al tipo di promozione automatica?
n::Uint8 = 0x00
x::Uint8 = n + 0x10
ERROR: type: typeassert: expected Uint8, got Uint64
Presumo che ciò accade perché methods(+)
per a::Uint8, b::Uint8
non è definito in modo n
è auto-promosso a Uint64
. C'è un modo migliore per affrontare questo problema, piuttosto che restituire tutto al suo tipo pre-promosso dopo ogni operazione? Non è questo qualcosa che l'interprete dovrebbe essere in grado di gestire automaticamente (ad esempio, se è stato detto chedeve essere assegnato a Uint8
dopo l'aggiunta)?
Questo comportamento è stato una scelta deliberata in julia 0.3, per ridurre il rischio di overflow. – tholy
L'unico caso per il quale avrei trovato utile il vecchio comportamento era che ne pensavo uno per il quale non era applicabile (int64 -> bigint non promuove automaticamente). – user3467349