代码之家  ›  专栏  ›  技术社区  ›  kilgoretrout

朱莉娅:“<:”符号是什么意思?

  •  1
  • kilgoretrout  · 技术社区  · 6 年前

    这在函数签名中意味着什么,例如:

    convert(::Type{T}, z::Complex) where {T<:Real}

    2 回复  |  直到 6 年前
        1
  •  9
  •   phipsgabler    4 年前

    Base.:(<:) ,如@Saqib的回答所述,以及 <: 用于描述约束。

    这种语法用法可以出现在方法的类型参数声明中,以将类型变量约束为其他类型的子类型:

    f(x::T) where {T<:Real} = zero(x)
    

    struct Foo{T<:Real} ... end )--约束生成的构造函数的方法,并允许类型构造函数仅应用于受约束的子类型。

    另一方面,在类型参数之外, <: 可用于将新类型声明为其他(必须是抽象)类型的子类型:

    struct Foo <: Real end
    

    ... where {isreal(T)} f ).

        2
  •  7
  •   Saqib Shahzad zschleien    6 年前

    <:(T1、T2)

    true 当且仅当所有类型的值 T1 是 也属于 T2 .

    Float64 <: AbstractFloat
    => true
    
    Vector{Int} <: AbstractArray
    => true
    
    Matrix{Float64} <: Matrix{AbstractFloat}
    => false