在IDL中,如何根据其名称访问变量?

时间:2016-06-28 21:38:07

标签: string idl-programming-language

我想将字符串转换为变量名,因此可以将其读取为已恢复的变量。

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

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

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),它并没有像我期望的那样转换它。

2 个答案:

答案 0 :(得分:2)

我建议改用SCOPE_VARFETCH()(它不像EXECUTE()那样受限制,可能效率更高)。你可以这样做:

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

答案 1 :(得分:0)

我写了这个,然后马上想到了答案。

所以,

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

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