将参数转换为复合类型

时间:2015-09-10 20:17:48

标签: julia

我仍然熟悉朱莉娅的工作方式,我遇到了一个奇怪的错误,我无法克服:

我有一个声明如下的复合类型

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文档之后,我一直无法找到为什么会出现错误信息。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:4)

Array(TransferFunction, 2)没有创建二维矩阵 - 它是一个2元素的向量。但Array{TransferFunction, 2}是任意大小的二维矩阵的类型。您打算做什么?

如果您真的需要传输函数矩阵,可以将Array(TransferFunction, 2)更改为Array(TransferFunction, 2, 1),或者您可以将类型声明从矩阵更改为向量:Array{TransferFunction, 1}。有点困惑的是,Array构造函数参数和类型参数看起来非常相似,但意思却截然不同。

帮助避免这种混淆的一种方法是在声明中使用MatrixVector类型,例如Vector{TransferFunction}而不是Array{TransferFunction, 1}