【问题标题】:Composite types in Julia: Dictionaries as a named field?Julia 中的复合类型:作为命名字段的字典?
【发布时间】:2015-05-27 15:06:19
【问题描述】:

我想创建一个复合类型,其中包含一个字典作为其命名字段之一。但是明显的语法不起作用。我敢肯定有一些基本的东西我不明白。这是一个例子:

type myType
    x::Dict()
end

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

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

【问题讨论】:

    标签: dictionary julia composite-types


    【解决方案1】:

    typesinstances 之间的语法存在细微差别。 Dict() 实例化一个字典,而 Dict 本身就是类型。定义复合类型时,字段定义的格式必须为symbol::Type

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

    在类型定义中,期望具有该类型的东西 Type{T<:Top},得到类型的实例 Dict{Any,Any}

    换句话说,它期望像Dict,这是一个Type{Dict},但却得到了Dict(),这是一个Dict{Any,Any}

    你想要的语法是x::Dict

    【讨论】:

      【解决方案2】:

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

      type myType
          x::Dict
      end
      

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        • 2013-01-28
        • 1970-01-01
        • 2017-04-24
        • 1970-01-01
        相关资源
        最近更新 更多