List 尝试存储到表达式中:结构引用
我在IDL语言中遇到了以下问题(我在一个结构列表中有不同大小的数组,我试图更改这些数组中的值,但它给了我一个名为“尝试存储到表达式中:结构引用”的错误)。 示例代码: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. 谁能告诉我,我做错了什么?有解决办法吗?到目
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
这样做的问题是,制作结构副本既麻烦又昂贵。也许有更好的方法来处理这个问题
编辑:也许这次谷歌讨论会提供一些见解:
因此没有解决方案:(无论如何,谢谢你。