这在函数签名中意味着什么,例如:convert(::Type{T}, z::Complex) where {T<:Real}
最佳答案
严格来说,应该区分谓词Base.:(<:)
,如@Saqib 的回答中所述,以及 <:
的语法用法用于描述约束。
这种语法用法可以出现在方法的类型参数声明中,以将类型变量限制为其他类型的子类型:
f(x::T) where {T<:Real} = zero(x)
这种情况的一种特殊情况是当您约束结构的类型参数( struct Foo{T<:Real} ... end
)时——它约束生成的构造函数的方法,并允许类型构造函数仅应用于受约束的子类型。另一方面,在类型参数之外,
<:
可用于将新类型声明为其他(必须是抽象的)类型的子类型:struct Foo <: Real end
尽管这两种情况都符合子类型谓词的含义,但您不能用其他任意表达式替换它们(例如,您不能在 ... where {isreal(T)}
中写入 f
)。
关于 Julia : "<:"符号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53015450/