Julia语言程序设计
上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便会在不同的系统中自动取对应的具体元类型,且与源类型有着一致的操作,从而可轻松地实现代码移植。

对于一些结构复杂、表述较长的类型,可以通过这种方法声明一个类型别称,以方便使用。可以说,实现过程中涉及直接的类型操作时,这样的机制提供了很大的想象空间,能够开发出更为灵活自如的程序。