Julia 检查对象是数组还是Dict
我想检查var是数组还是DictJulia 检查对象是数组还是Dict,julia,Julia,我想检查var是数组还是Dict typeof(var) == Dict typeof(var) == Array 但是它不起作用,因为typeof太精确了:Dict{ascistring,Int64}。 最好的方法是什么? 如果你需要一个“不精确”的检查,你可能想考虑使用这个函数,比如: julia> d = Dict([("A", 1), ("B", 2)]) julia> isa(d, Dict) true julia> isa(d, Array) false ju
typeof(var) == Dict
typeof(var) == Array
但是它不起作用,因为typeof太精确了:Dict{ascistring,Int64}。
最好的方法是什么? 如果你需要一个“不精确”的检查,你可能想考虑使用这个函数,比如:
julia> d = Dict([("A", 1), ("B", 2)])
julia> isa(d, Dict)
true
julia> isa(d, Array)
false
julia> a = rand(1,2,3);
julia> isa(a, Dict)
false
julia> isa(a, Array)
true
julia> if isa(d, Dict)
println("I'm a dictionary!")
end
I'm a dictionary!
julia> if isa(a, Array)
println("I'm an array!")
end
I'm an array!
然后可以在中使用isa()
函数,如下所示:
julia> d = Dict([("A", 1), ("B", 2)])
julia> isa(d, Dict)
true
julia> isa(d, Array)
false
julia> a = rand(1,2,3);
julia> isa(a, Dict)
false
julia> isa(a, Array)
true
julia> if isa(d, Dict)
println("I'm a dictionary!")
end
I'm a dictionary!
julia> if isa(a, Array)
println("I'm an array!")
end
I'm an array!
注意:使用Julia 0.4.3进行测试而不是检查特定的具体类型,例如数组或Dict,您可以通过检查抽象类型做得更好,并获得很大的灵活性 例如:
julia> x = [1,2,3]
3-element Array{Int64,1}:
1
2
3
julia> d = Dict(:a=>1,:b=>2)
Dict(:a=>1,:b=>2)
julia> isa(d, Associative)
true
julia> isa(x, AbstractArray)
true
Julia中有许多不同类型的数组,因此检查Array
可能限制太多,例如,您将无法获得稀疏矩阵。
还有许多不同类型的关联结构,
Dict
、objectdict
、SortedDict
、orderedict
,所以您只想找到一个泛型(Dict或“Array”)?没错!“Dict”或“Array”答案很好,但您也可以将问题中的=
替换为是的,我的观点是,如果要使用isa
(