我用一个名为 SCATTERING 的函数编写了名为 single.pro 的 .pro IDL/GDL 文件,并且我在不同的行上调用了该函数。
函数定义为:
function scattering, dust, dsun, dstar, sflux, sigma, $
albedo, phase, angle, mean_density
并且,函数调用如下:
f = scattering(dust, dsun, dstar, sflux[iwave], sigma[iwave], albedo, phase, angle[iangle], mean_density)
程序的编译发生没有错误:
% Compiled module: SCATTERING.
% Compiled module: $MAIN$.
但是,在运行时,程序会在我调用函数 SCATTERING() 的那一行中断
% SCATTERING: Scalar subscript out of range [>].e (61)
我查看了这个错误,发现这可能是由于 IDL/GDL 的数组索引语法造成的,其中数组可以使用 [] 和 () 进行索引。
IDL 文档说建议添加该行以防止这种行为。
COMPILE_OPT STRICTARR
但是,我不确定在哪里添加这一行。在编译和运行程序之前,我尝试将它添加到文件的开头、函数的开头,甚至在 GDL REPL 中执行这一行,但这些都不起作用。
任何想法如何解决这个问题?
提前致谢 !