小智 5
<:( T1,T2)
亚型运营商:返回true
当且仅当类型的所有值T1
也是类型T2
.
例子:
Float64 <: AbstractFloat
=> true
Vector{Int} <: AbstractArray
=> true
Matrix{Float64} <: Matrix{AbstractFloat}
=> false
Run Code Online (Sandbox Code Playgroud)
严格来说,应该区分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
)。