Zum Beispiel:Julia: Wie kann man Änderungen am Auto-Promotion-Typ vermeiden?
n::Uint8 = 0x00
x::Uint8 = n + 0x10
ERROR: type: typeassert: expected Uint8, got Uint64
Ich nehme an, dies geschieht, weil methods(+)
für a::Uint8, b::Uint8
nicht so definiert ist n
wird automatisch gefördert Uint64
. Gibt es einen besseren Weg, damit umzugehen, als nach jeder Operation alles wieder auf den vorgeförderten Typ zurück zu werfen? Ist das nicht etwas, das der Interpreter automatisch verarbeiten kann (d. H., Wenn nach der Hinzufügung x
eine Uint8
zugewiesen wird)?
Dieses Verhalten war eine bewusste Wahl in Julia 0,3, um das Risiko von Überlauf zu reduzieren. – tholy
Der einzige Fall, für den ich altes Verhalten nützlich gefunden hätte, war ich glaube, für den es nicht galt (int64 -> bigint fördert nicht automatisch). – user3467349