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

kil*_*out 2 julia

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

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

小智 5

<:( T1,T2)

亚型运营商:返回true当且仅当类型的所有值T1也是类型T2.

例子:

Float64 <: AbstractFloat
=> true

Vector{Int} <: AbstractArray
=> true

Matrix{Float64} <: Matrix{AbstractFloat}
=> false
Run Code Online (Sandbox Code Playgroud)


phi*_*ler 5

严格来说,应该区分Base.:(<:)@Saquib的答案中所述的谓词和<:用于描述约束的句法用法。

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

f(x::T) where {T<:Real} = zero(x)
Run Code Online (Sandbox Code Playgroud)

在类型声明中,将新类型声明为其他某种(必要地是抽象的)类型的子类型:

struct Foo <: Real end
Run Code Online (Sandbox Code Playgroud)

虽然这两种情况都与子类型谓词的意思行,你不能与其他任意表达式(例如,你可以不写取代他们... where {isreal(T)}f)。