Julia类型的设计师字段

时间:2014-08-08 01:24:58

标签: julia

我想要一个带参数的类型,并使用该参数构造一个类型内部的列表,如下所示:

type Foo
    index::Int
    end

type Goo
    size::Int
    myList = [Foo(i) for i in 1:size]

    Goo(size) = new(size)
    end

我已经尝试了很多不同的方式,这里显示的方式希望传达我正在尝试做的事情。我并不真正关心Goo保留大小信息,我只想让它使用该信息构建一个Foo对象的列表,其中size对象的内部长度为Goo。输入{{1}}。

在一个不相关的说明中,我阅读了关于允许抽象字段类型的github讨论和关于谷歌团体的讨论,我真的希望这个功能包含在Julia中,给定的工作使代码不必要地复杂和混乱(在我看来) )。

1 个答案:

答案 0 :(得分:3)

它应该工作。这是带有外部构造函数的版本:

type Foo
    index::Int
end

type Goo
    mylist::Vector{Foo}
end
Goo(size::Int) = Goo([Foo(i) for i in 1:size])

或内部构造函数

type Goo
    mylist::Vector{Foo}
    Goo(size::Int) = new([Foo(i) for i in 1:size])
end

至于抽象类型“问题”,我认为问题不完全 - 接口可能是解决方案。无论如何,许多软件包在没有抽象类型字段的情况下工作正常。