Julia中的复合类型:字典作为命名字段?

时间:2015-05-27 15:06:19

标签: dictionary julia compositetype

我想制作一个包含字典作为其命名字段之一的复合类型。但显而易见的语法并不奏效。我确信有一些基本的东西我不明白。这是一个例子:

type myType
    x::Dict()
end

Julia说:type: myType: in type definition, expected Type{T<:Top}, got Dict{Any,Any}这意味着,我猜测,字典不是Any的字典,因为任何命名字段都必须如此。但我不确定如何说出我的意思。

我需要一个名为字典的字段。内部构造函数将初始化字典。

2 个答案:

答案 0 :(得分:8)

types instances 之间的语法有细微差别。 Dict()实例化字典,而Dict本身就是类型。定义复合类型时,字段定义必须采用symbol::Type

的形式

该错误消息有点令人困惑。它实际上是这样说的:

  

在类型定义中,期望类型为 Type{T<:Top}的内容, Dict{Any,Any}类型的实例。

     

换句话说,它预期类似于DictType{Dict},而是获得Dict(),这是Dict{Any,Any}

您想要的语法是x::Dict

答案 1 :(得分:5)

Dict()创建一个字典,特别是Dict{Any,Any}(即键和值可以是任何类型,<:Any)。您希望该字段为类型 Dict,即

type myType
    x::Dict
end

如果你知道键和值类型,你甚至可以写,例如

type myType
    x::Dict{Int,Float64}
end