朱莉娅:如何避免自动升级类型的变化?

时间:2015-02-09 01:36:34

标签: types julia

例如:

n::Uint8 = 0x00
x::Uint8 = n + 0x10
ERROR: type: typeassert: expected Uint8, got Uint64

我认为这是因为methods(+) a::Uint8, b::Uint8未定义,因此n会自动提升为Uint64。是否有更好的方法来解决这个问题,而不是在每次操作后将所有内容都重新投入到预先提升的类型中?这不是解释器应该能够自动处理的事情(即如果在添加之后应该为x分配Uint8)吗?

1 个答案:

答案 0 :(得分:7)

我认为Julia 0.3没有比

更好的方法
julia> typeof(uint8(0x00 + 0x10))
UInt8

但是在Julia 0.4中你不必担心,因为它不再进行自动升级了:

julia> typeof(0x00 + 0x10)
UInt8