上QQ阅读APP看书,第一时间看更新
6.4.4 类型别称
类型本身也可以作为右操作数,赋值给某个变量,例如:
julia> MyInt = Integer Integer julia> MyInt === Integer true
显然,其中定义的类型变量本身仍是DataType的实例,也是可用的类型,即:
julia> typeof(MyInt) DataType
这种类型变量有时候会非常有用,例如,在长期迭代或规模稍大的程序中,为了实现前后的兼容性、适应第三方包或方便系统移植,往往需要对类型进行各种变化,这其中最简单的方式便是为类型另起一个名字。假设需要达到如下的效果:
# 32位系统 julia> UInt UInt32 # 64位系统 julia> UInt UInt64
即无论是怎样的系统,都希望UInt都是有效的类型,而且能自动适配系统的位数,可写如下的代码实现:
if Int === Int64 # Int是Julia预先定义的具体类型,会随系统而变化。 const UInt = UInt64 else const UInt = UInt32 end
此后,UInt便会在不同的系统中自动取对应的具体元类型,且与源类型有着一致的操作,从而可轻松地实现代码移植。
对于一些结构复杂、表述较长的类型,可以通过这种方法声明一个类型别称,以方便使用。可以说,实现过程中涉及直接的类型操作时,这样的机制提供了很大的想象空间,能够开发出更为灵活自如的程序。