我试图在我的关键字参数中声明一个类型的Vector类型,该类型是在程序开始时由用户选择的可变维度。当我使用变量来声明维度时,终端告诉我变量是未知的。这不是sub 0.4 Julia中的问题,因为多维数组可以用单维数组声明。我试过常数,他们也不适合我。有没有办法绕过这个没有将数据转储到文本文件和从函数读取。
function dataDoer(len,preConns::Array{Array{Int64,1},(len)})
println("do stuff here")
end
function main()
local netDim = (2,2)
local preConns::Array{Array{Int64,1},length(netDim)} = fill!(Array(Array{Int64,1},netDim),Int64[])
dataDoer(length(netDim),preConns)
end
main()
错误:LoadError:UndefVarError:len未定义
答案 0 :(得分:1)
我会看看docs是如何实现阵列的,因为它们揭示了这里发生的事情。
在Array{T,N}
中,N
并未引用数组的长度或 size ,但它是' s 维度。 Array
实际上可以有可变长度,可以选择push!
,append!
和splice!
元素进出。要获得数组的长度,只需执行length(A)
即可。希望有助于澄清!
答案 1 :(得分:1)
您必须使N
成为类型参数。 (我已将其重命名为function dataDoer{N}(preConns::Array{Array{Int64,1},N})
println("do stuff here")
end
以下,这是此类参数的常见做法。)然后您可以执行此操作
N
请注意preConns
不再是函数的参数,而是从{{1}}的类型推断出来。