别名¶
使用 alias
可以给类型一个不同的名字
alias PInt32 = Pointer(Int32)
ptr = PInt32.malloc(1) # : Pointer(Int32)
每次使用别名时,编译器都会将其替换为它所指的类型。
别名对于避免写长类型名称很有用,而且还能用于描述递归类型
alias RecArray = Array(Int32) | Array(RecArray)
ary = [] of RecArray
ary.push [1, 2, 3]
ary.push ary
ary # => [[1, 2, 3], [...]]
json 是递归类型的现实世界例子
module Json
alias Type = Nil |
Bool |
Int64 |
Float64 |
String |
Array(Type) |
Hash(String, Type)
end