修改数组中复合类型成员的值

3
在Julia(0.3.0-rc1)中,当我使用复合类型的实例填充数组并更新单个实例的成员时,数组中的所有实例都会被更新。如果这是预期行为,那么我应该如何仅更改数组中的单个元素的值?
相关代码:
type Foo
    x :: Int
    y :: Int
end

arr = fill(Foo(2, 4), 3)
arr[2].x = 5

我期望看到的是 [Foo(2, 4), Foo(5, 4), Foo(2, 4)],但实际上我得到了 [Foo(5, 4), Foo(5, 4), Foo(5, 4)]。我做错什么了吗?我是否应该像这样始终更新整个元素 arr[2] = Foo(5, 4)(这将得到期望的结果)?TIA.
1个回答

3

您创建了一个 Foo 实例,并使用该实例的引用填充了数组。

您可能想要使用 arr = [Foo(2,4) for i in 1:3],它将为每个索引创建一个新的 Foo(2,4) 副本。


谢谢,这正是我想要的。 - Arets Paeglis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接