Julia 将参数转换为复合类型
我仍在熟悉朱莉娅的工作方式,我遇到了一个我无法克服的奇怪错误: 我有一个复合类型声明如下Julia 将参数转换为复合类型,julia,Julia,我仍在熟悉朱莉娅的工作方式,我遇到了一个我无法克服的奇怪错误: 我有一个复合类型声明如下 type Mesh domain::Tuple resolution::Tuple stepsize::Tuple data::Array{TransferFunction, 2} 其中TransferFunction是我定义的另一个复合类型 当我尝试使用构造函数创建这种类型的实例(带有空TransferFunction数组)时 my_mesh = Mesh((100, 1
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})
我不确定数组(TransferFunction,1)来自哪里。我假设这是一个简单的问题,有一个简单的解决方案,但在深入研究Julia文档之后,我一直无法找到为什么会出现这种错误消息
有人有什么想法吗?数组(TransferFunction,2)
不会创建二维矩阵-它是一个2元素向量。但是数组{TransferFunction,2}
是任意大小的二维矩阵的类型。你打算做什么
如果确实需要传递函数矩阵,可以将Array(TransferFunction,2)
更改为Array(TransferFunction,2,1)
,也可以将类型声明从矩阵更改为向量:Array{TransferFunction,1}
。数组构造函数参数和类型参数看起来很相似,但含义却截然不同,这让人有点困惑
有助于避免这种混淆的一种方法是在声明中使用
矩阵
或向量
类型别名,例如向量{TransferFunction}
而不是数组{TransferFunction,1}
完美!谢谢你的帮助。从Array()
的定义来看,我的印象是Array(TransferFunction,2)
创建了一个传递函数的二维矩阵。谢谢你的澄清!