julia-Tuple/tuple(第14讲)

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)

=========================================================================

你可能感兴趣的:(julia)