【问题标题】:Easy initialisation of empty containers轻松初始化空容器
【发布时间】:2023-02-08 11:03:44
【问题描述】:

考虑以下代码。

struct MyType
    data::Dict{Int, Float64}()
end

MyType() = MyType(Dict{Int, Float64}())

必须重复 data 的类型有点笨拙,如果您有更多变量和/或您的类型变得更复杂,问题很快就会失控。我可以避免这种情况吗?

【问题讨论】:

    标签: julia


    【解决方案1】:

    如果所讨论的类型是可默认构造的(即,它具有无参数构造函数),则可以使用以下技巧。

    struct Default; end
    Base.convert(::Type{T}, ::Default) where T = T()
    
    struct MyType
        data::Dict{Int, Float64}()
    end
    
    MyType() = MyType(Default())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多