我是Julia语言的新学习者。我已经定义了一个对象数组,如下所示:
type a
b :: Int
c :: Int
end
d = Array{a}(3)
这会返回一个包含垃圾值的3元素数组{a,1}。我想为它分配值。我编写了以下代码,但它无效。
for i = 1:3
d[i].b = i
d[i].c = i^2
end
任何建议都将受到高度赞赏。
答案 0 :(得分:1)
要初始化a
,您必须调用构造函数。此外,您可以使用comprehension构建数组:
type a
b :: Int
c :: Int
end
d=[a(i,i^2) for i in 1:3]
给出了
3-element Array{a,1}:
a(1, 1)
a(2, 4)
a(3, 9)
另请注意,不推荐使用type
,最好将复合类型声明为:
struct Foo ... end
或
mutable struct Foo ... end
请参阅官方文档:Composite types和Mutable composite types
更新(您的评论):是的,您可以使用任何功能......
function f() # can also use any argument
# long computation... for demo random number
b=rand(Int8)
c=rand(Int8)
return a(b,c)
end
f (generic function with 2 methods)
julia> d=[f() for i in 1:3]
3-element Array{a,1}:
a(80, 104)
a(98, -62)
a(-37, 17)