0

idl 8.4 引入了该lambda功能。我有 IDL 8.6.1,并且该lambda功能无法按文档说明完全工作:

IDL> f = lambda(x : x * x)
IDL> print, call_function(f, findgen(10))
      0.00000      1.00000      4.00000      9.00000      16.0000      25.0000      36.0000      49.0000      64.0000
      81.0000
IDL>  print, f(findgen(10))
IDL$LAMBDAF5 IDL$LAMBDAF5 IDL$LAMBDAF5 IDL$LAMBDAF5 IDL$LAMBDAF5 IDL$LAMBDAF5 IDL$LAMBDAF5 IDL$LAMBDAF5 IDL$LAMBDAF5
IDL$LAMBDAF5
IDL> print, f(5)
% Attempt to subscript F with <INT      (       5)> is out of range.

那么,为什么f(5)不返回25呢?

4

1 回答 1

1

哦,正如这里所评论的,这是记录在案的。

注意:要直接调用 Lambda 函数,您应该确保 compile_opt strictarr(或 compile_opt idl2)已打开,以便 IDL 将括号解释为函数调用而不是数组索引。有关详细信息,请参阅 COMPILE_OPT。

所以 compile_opt strictarrcompile_opt idl2

但是,我原以为默认情况下可以直接调用。

于 2020-10-23T12:42:17.253 回答