我想要一个带参数的类型,并使用该参数构造一个类型内部的列表,如下所示:
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中,给定的工作使代码不必要地复杂和混乱(在我看来) )。
答案 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
至于抽象类型“问题”,我认为问题不完全 - 接口可能是解决方案。无论如何,许多软件包在没有抽象类型字段的情况下工作正常。