尝试存储到表达式:结构参考

时间:2014-10-03 09:18:39

标签: list reference expression structure idl

我在IDL语言中遇到了以下问题(我在结构列表中有不同大小的数组,我尝试更改这些数组中的值,但它给出了一个名为&#34的错误;尝试存储到表达式中:结构引用。")。 示例代码:

a = list()
a.add,{a: 1, b: findgen(10)}
a.add,{a: 2, b: findgen(20)}
a[0].b[5] = 2
% Attempt to store into an expression: Structure reference.

有人可以告诉我,我做错了什么?这有解决方法吗?到目前为止,我还没有找到任何有用的提示。

提前致谢!

编辑:我使用IDL 8.2.1

EDIT2:它不适用于IDL 8.4

1 个答案:

答案 0 :(得分:1)

我自己是IDL新手,但我认为当您访问列表中的结构时发生的事情是列表返回结构的副本。当此副本位于左侧时,它是一个临时副本,IDL阻止分配给临时副本。

试试这个:

a = list()
a.add,{a: 1, b: findgen(10)}
a.add,{a: 2, b: findgen(20)}
c = a[0]
c.b[5] = 2
a[0] = c
print, a[0].b
0.000000      1.00000      2.00000      3.00000      4.00000      2.00000      6.00000      7.00000      8.00000      9.00000

这个问题在于制作结构的副本既麻烦又昂贵。也许还有更好的办法来解决这个问题?

编辑:也许这次Google讨论会提供一些见解:

Modifying Arrays and Structures in HASH's (hint: you can't)