2014-10-03 68 views
1

我在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工作,要麼

回答

0

我是一個新手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 

的問題,這是它的麻煩和昂貴,使結構的副本。也許有更好的方法來處理這個問題?

編輯:這也許谷歌的討論將提供一些見解:

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

+0

所以無解。 :( 不管怎麼說,還是要謝謝你。 – Csega 2015-04-30 10:29:51