Core.Tuple 2020/6/11
=========================================================================
1.元组类型
# 能够容纳任何元组
julia> Tuple # Tuple
julia> Tuple.parameters# svec(Vararg{Any,N} where N)
# 允许Tuple匹配任何类型
julia> typeintersect(Tuple, Tuple{Int,Float64})# Tuple{Int64,Float64}
# 如果variadic(Vararg)元组类型具有自由变量,可描述不同类型元组:
julia> typeintersect(Tuple{Vararg{T} where T}, Tuple{Int,Float64})# Tuple{Int64,Float64}
julia> typeintersect(Tuple{Vararg{T}} where T, Tuple{Int,Float64})# Union{}
# Tuple{}是与众不同:
julia> Tuple{} # Tuple{}
julia> Tuple{}.parameters # svec()
julia> typeintersect(Tuple{}, Tuple{Int})# Union{}
# “主要”元组类型
julia> pointer_from_objref(Tuple) # Ptr{Cvoid} @0x00007f5998a04370
julia> pointer_from_objref(Tuple{}) # Ptr{Cvoid} @0x00007f5998a570d0
julia> pointer_from_objref(Tuple.name.wrapper) # Ptr{Cvoid} @0x00007f5998a04370
julia> pointer_from_objref(Tuple{}.name.wrapper)# Ptr{Cvoid} @0x00007f5998a04370
=========================================================================
2.1.元组
定义:元组是固定长度容器,可容纳任何值不能修改;由逗号和括号构成,可索引访问:
构造:
Tuple(...,...,) or (...,...,)
promote(1, 2.3, 4//3)# 构造元组:提升Float64 (1.0, 2.3, 1.3333333333333333)
实例:
x,y=(1,),(0.0, "hello", 6*7)
Tuple{Int}(1,),()#()表示空的(长度为0);长度为1元组必须用逗号写入(1,)
tuple(1,),tuple(0.0, "hello", 6*7)
2.2.命名元组
# 元组的组成部分可以有选择地命名,在这种情况下,将构造命名的元组:
x = (a=1, b=1+1)# (a = 1, b = 2)
x.a,x[1] #(1, 1)
=========================================================================