在 IDL 中,如何访问给定名称的变量?

In IDL, how can I access a variable given its name?

我想将一个字符串转换为一个变量名,这样它就可以作为一个已经恢复的变量来读取。

所以,我浏览了一个文件,并查看了所有的文件。我使用 RESTORE 来使用 IDL 中的文件,restore 将该对象命名为略有不同的名称。它将其命名为一个对象,我们将其称为 map_1(在代码中称为 filerestore_name)。这与文件名有关,我可以重新创建这个变量名——但是,它保存为一个字符串。

现在,我将其传递给 make_cool_video 过程。然而,尽管这个字符串现在与变量名完全相同,但它仍然是一个字符串!。 因此,作为一个字符串,该过程无法运行。

filenames=FILE_SEARCH('rxrt*')
filenames_withoutextension = STREGEX(filenames,'rxrt_[0-9]+[a-zA-Z_]+',/EXTRACT,/FOLD_CASE)

restore, '/home/tomi/Documents/actualwork/'+filenames_withoutextension(18)+'.idl_sav',

filerestore_name = STRJOIN(STRSPLIT(filenameswithout(18),'_[0-9]+',/EXTRACT,/REGEX),'')
PRINT, filerestorename

make_cool_video, EXECUTE(filerestore_name),filename=filerestorenames, outdir='/path/to.file/'

retall

我尝试了什么:使用 RESTORE 函数和关联的 RESTORED_OBJECTS 将指针存储在数组中,然后引用该数组。但是我无法获得形成数组的恢复功能。

使用 EXECUTE(filerestore_name) 然而,这并没有像我预期的那样转换它。

写到这里,立马想到了答案。

所以,

将所有内容转换为字符串:

string1 = "makecooljes, "+ filerestore_name, outdir='file/to/path/'"
result=  EXECUTE(string1)

我建议使用 SCOPE_VARFETCH() instead (it isn't as limited as EXECUTE() 并且可能更有效)。你可以这样做:

make_cool_video, (SCOPE_VARFETCH(filerestore_name)), filename=filerestorenames, outdir='/path/to.file/'