我需要定义一个Vector,以便其中的所有元素都必须为同一类型,尽管该类型本身可以是任何类型。我尝试了以下方法:
["1", 2] isa AbstractVector{T} where T <: Any
但这返回true
。
在这种情况下,以下方法可以正常工作,并根据需要正确返回false
:
["1", 2] isa AbstractVector{T} where T <: Union{AbstractString, Number}
但是,我不想将类型限制为仅字符串,数字等。因此,尽管类型本身可以灵活设置,但我还能如何将Vector的所有元素都限制为同一类型呢?>
答案 0 :(得分:1)
["2", 2]
的类型为Vector{Any}
,而T <: Any
的类型为true
,因为设置T = Any
会得到Any <: Any
,其值应为true
“ 1”是String
,而String <: AbstractString
是true
。但是朱莉娅的类型系统只能像这样
T{S} <: T'{S}
在T <: T'
下为true,在T{S} <: T{S'}
下为S <: S'
,但不是。我不知道类型理论中的技术术语,但应在此处https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)