Julia 中的复合类型:作为命名字段的字典?
Posted
技术标签:
【中文标题】Julia 中的复合类型:作为命名字段的字典?【英文标题】:Composite types in Julia: Dictionaries as a named field? 【发布时间】:2015-05-27 15:06:19 【问题描述】:我想创建一个复合类型,其中包含一个字典作为其命名字段之一。但是明显的语法不起作用。我敢肯定有一些基本的东西我不明白。这是一个例子:
type myType
x::Dict()
end
Julia 说:type: myType: in type definition, expected TypeT<:Top, got DictAny,Any
这意味着,我猜,字典不是 Any
的一个,因为任何命名字段都必须如此。但我不知道如何表达我的意思。
我需要一个作为字典的命名字段。内部构造函数将初始化字典。
【问题讨论】:
【参考方案1】:types 和 instances 之间的语法存在细微差别。 Dict()
实例化一个字典,而 Dict
本身就是类型。定义复合类型时,字段定义的格式必须为symbol::Type
。
该错误消息有点令人困惑。它实际上是这样说的:
在类型定义中,期望具有该类型的东西
TypeT<:Top
,得到类型的实例DictAny,Any
。换句话说,它期望像
Dict
,这是一个TypeDict
,但却得到了Dict()
,这是一个DictAny,Any
。
你想要的语法是x::Dict
。
【讨论】:
【参考方案2】:Dict()
创建一个字典,特别是 DictAny,Any
(即键和值可以有任何类型,<:Any
)。您希望该字段为 type Dict
,即
type myType
x::Dict
end
如果你知道键和值类型,你甚至可以写,例如
type myType
x::DictInt,Float64
end
【讨论】:
以上是关于Julia 中的复合类型:作为命名字段的字典?的主要内容,如果未能解决你的问题,请参考以下文章