genrand2d.pro 中的 IDL 语法错误

IDL syntax error in genrand2d.pro

我对 IDL 不是很熟悉,但正在尝试 运行 同事给我的代码。我在通用代码片段 genrand2d.pro(从 here 下载)中遇到奇怪的语法错误,这阻止了整个事情 运行ning。这可能是版本语法更改的事情,因为我的同事有 IDL 版本 6.3 而我有 8.6.0(在 Scientific Linux 7.2 上)但我无法找到语法更改列表或类似于检查。

引起问题的行是:

randx = arrscl(randomu(seed, nbad, /double), $ 
                     minx, maxx, $ 
                     arrmin=0d, arrmax=1d )

错误信息:

                     arrmin=0d, arrmax=1d )
                            ^
% Syntax error.
  At: /generic/path/genrand2d.pro, Line 114

我的猜测是 IDL 混淆了 arrscl 是数组还是函数。要测试是否是这种情况,请编译 arrscl、重新编译 genrand2d,然后重试。

一般来说,要修复这些错误,请在您的所有例程中使用 compile_opt strictarr 并始终使用方括号进行数组索引。