我需要定义一个 Vector 以便其中的所有元素都需要是相同的类型,尽管类型本身可以是任何类型。我尝试了以下方法:
["1", 2] isa AbstractVector{T} where T <: Any
Run Code Online (Sandbox Code Playgroud)
但这会返回true。
以下在这种情况下有效并false根据需要正确返回:
["1", 2] isa AbstractVector{T} where T <: Union{AbstractString, Number}
Run Code Online (Sandbox Code Playgroud)
但是,我不想将类型限制为仅字符串、数字等。那么,尽管类型本身可以灵活,但我还能如何将 Vector 的所有元素限制为相同类型?
["2", 2]是类型Vector{Any}并且T <: Any是true因为设置T = Any给出了Any <: Any它应该评估为true.
“1”是 aString并且String <: AbstractString是true。但 Julia 的类型系统只能这样工作
T{S} <: T'{S}如果 则为真,但如果即使 则不T <: T'为真。我不知道类型论中的技术术语,但应该在这里详细说明https://en.wikipedia.org/wiki/Covariance_and_contravariance_(computer_science)T{S} <: T{S'}S <: S'