4
我想寫兩個函數具有相同的名稱,可以利用朱莉婭的多個調度設施和涉及陣列和數組陣列。朱莉婭參數函數陣列與多個調度
假設有三個輸入變量
# typeof(a) => Array{Array{T,N},1}
a=Array[[1,2,3],[4,5,6]]
# typeof(b) => Array{Int64,1}
b=[1,2,3]
# typeof(c) => Array{Array{Float64,1},1}
c=[rand(10) for i in 1:2]
而且我寫的兩個函數像這樣
function test(x::Array{Array})
println("received an array of array => $(typeof(x))")
end
function test{T<:Number}(x::Array{T,1})
println("received a vector. converting.....")
nx = Array[x]
test(nx)
end
以上方法適用於a
和b
但不c
。
test(a)
# received an array of array => Array{Array{T,N},1}
test(b)
# received a vector. converting.....
# received an array of array => Array{Array{T,N},1}
test(c)
# LoadError: MethodError: `test` has no method matching test(::Array{Array{Float64,1},1})
# while loading In[37], in expression starting on line 1
現在,如果我將函數定義更改爲x::Array{Array{Float64,1},1}
,這將工作。但我的問題是不是Array{Array}
應該採取任何類型的數組陣列?
應該如何處理數組數組中的內部類型參數?