在Julia中重新分配对象数组中的值

时间:2018-06-05 06:21:23

标签: julia

我是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

任何建议都将受到高度赞赏。

1 个答案:

答案 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 typesMutable 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)