我仍然熟悉朱莉娅的工作方式,我遇到了一个奇怪的错误,我无法克服:
我有一个声明如下的复合类型
type Mesh
domain::Tuple
resolution::Tuple
stepsize::Tuple
data::Array{TransferFunction, 2}
其中TransferFunction是我定义的另一种复合类型。
当我尝试使用构造函数创建此类型的实例(使用空的TransferFunction数组)时,
my_mesh = Mesh((100, 100), (100,100), (1, 1), Array(TransferFunction, 2))
我收到以下错误消息:
ERROR: `convert` has no method matching convert(::Type{Array{TransferFunction,2}}, ::Array{TransferFunction,1})
我不确定Array(TransferFunction,1)的来源。我假设这是一个简单的解决方案的简单问题,但在深入研究Julia文档之后,我一直无法找到为什么会出现错误信息。
有人有什么想法吗?
答案 0 :(得分:4)
Array(TransferFunction, 2)
没有创建二维矩阵 - 它是一个2元素的向量。但Array{TransferFunction, 2}
是任意大小的二维矩阵的类型。您打算做什么?
如果您真的需要传输函数矩阵,可以将Array(TransferFunction, 2)
更改为Array(TransferFunction, 2, 1)
,或者您可以将类型声明从矩阵更改为向量:Array{TransferFunction, 1}
。有点困惑的是,Array构造函数参数和类型参数看起来非常相似,但意思却截然不同。
帮助避免这种混淆的一种方法是在声明中使用Matrix
或Vector
类型,例如Vector{TransferFunction}
而不是Array{TransferFunction, 1}
。