List 尝试存储到表达式中:结构引用

List 尝试存储到表达式中:结构引用,list,reference,expression,structure,idl,List,Reference,Expression,Structure,Idl,我在IDL语言中遇到了以下问题(我在一个结构列表中有不同大小的数组,我试图更改这些数组中的值,但它给了我一个名为“尝试存储到表达式中:结构引用”的错误)。 示例代码: 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语言中遇到了以下问题(我在一个结构列表中有不同大小的数组,我试图更改这些数组中的值,但它给了我一个名为“尝试存储到表达式中:结构引用”的错误)。 示例代码:

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

我自己也是一个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
这样做的问题是,制作结构副本既麻烦又昂贵。也许有更好的方法来处理这个问题

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

因此没有解决方案:(无论如何,谢谢你。