【发布时间】:2015-03-20 03:05:24
【问题描述】:
在 Julia 中,我想将函数参数的类型指定为数组数组。所以我有
function foo{T <: Any}(x::Array{Array{T}})
但如果我在 REPL 中设置参数x,例如:
x = Array[[0,1],[1,2,3],[0,1,2,4]]
然后它会自动获得以下类型分配(例如),其中包括其维度:
x::Array{Array{T,N},1}
这样我就会得到错误
ERROR: `foo` has no method matching foo(::Array{Array{T,N},1}).
我根本不想限制数组维度,所以我认为解决方案可能类似于
function foo{T <: Any, N <: Number}(x::Array{Array{T,N},N})
但这也不起作用。
如何将参数类型指定为数组数组?
【问题讨论】:
-
您能否举例说明如何生成类似于您的
x的内容?我的预感是你遇到了invariance,像foo{T<:Array}(x::Array{T})这样的定义就可以解决问题。 -
是的,这行得通,我不确定将
{T<:Array}位放入的规则。例如,如果我有多个具有相同问题的参数,我该如何输入多种类型参数?感谢您的链接,它非常有帮助,我不知道在哪里看。我在问题中添加了一个如何生成x的示例。
标签: arrays types julia multiple-dispatch