【问题标题】:Julia types with abstract type and definied type具有抽象类型和定义类型的 Julia 类型
【发布时间】:2017-09-03 20:07:24
【问题描述】:

如何用一个抽象和一个定义的字段来做类型

像这样:

abstract AbstractType 

type type1 <: AbstractType
    x
    y
end

type type2 <: AbstractType
    w 
    z 
end

type MyType{T<:AbstractType}
         a::T
         b::Int64
 end

a = MyType(type1(1,2))

我尝试了一些构造函数,但效果不佳。

【问题讨论】:

    标签: types julia abstract


    【解决方案1】:

    您需要MyType 是一个只有一个字段的类型,并允许该字段包含一个type1(或两个)。那就是:

    type MyType{T<:AbstractType}
             a::T
    end
    

    【讨论】:

    • 为什么会出现这个问题?实例化为MyType(type1(1,2), 0) 会很好用。我不认为有这样的限制。
    • 但从问题来看,他似乎只想传递一个type1(“如何使用一个抽象和一个定义的字段进行类型”),并且想知道为什么他的命令是失败。我同意这个问题非常不清楚,我试图回答我认为的问题。
    【解决方案2】:

    不清楚您要做什么。您的最后一条语句不起作用的原因与混合类型的关系较小,而与您在尝试实例化类型时缺少输入参数这一事实有关。

    如果您希望能够使用 b 的默认值进行实例化,请定义适当的包装构造函数:

    abstract AbstractType
    type type1 <: AbstractType; x; y; end
    type type2 <: AbstractType; w; z; end
    type MyType{T<:AbstractType}; a::T; b::Int64; end
    MyType{T<:AbstractType}(t::T) = MyType(t,0);   # wrapper
    

    julia> a = MyType(type1(1,2))
      MyType{type1}(type1(1, 2), 0)
    

    【讨论】:

    • 非常感谢!这就是我想要的!
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多