Например:Julia: Как избежать изменений типа автоматического продвижения?
n::Uint8 = 0x00
x::Uint8 = n + 0x10
ERROR: type: typeassert: expected Uint8, got Uint64
Я предполагаю, что это происходит потому, что methods(+)
для a::Uint8, b::Uint8
не определен так n
является автоматически повышен до Uint64
. Есть ли лучший способ справиться с этим, чем отбрасывать все обратно до его заранее подготовленного типа после каждой операции? Разве это не то, что интерпретатор должен иметь возможность обрабатывать автоматически (то есть, если ему сказали x
после добавления) Uint8
?
Такое поведение было преднамеренным выбором в julia 0.3, чтобы уменьшить риск переполнения. – tholy
Единственным случаем, для которого я бы нашел полезное старое поведение, я думаю, что тот, для которого он не применим (int64 -> bigint не автопродвигает). – user3467349