【问题标题】:IDL lambda: Attempt to subscript is out of rangeIDL lambda:尝试下标超出范围
【发布时间】:2020-10-23 20:42:17
【问题描述】:

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

【问题讨论】:

    标签: idl-programming-language


    【解决方案1】:

    哦,正如here 所评论的那样,这是documented

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

    所以 compile_opt strictarr 或者 compile_opt idl2.

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

    【讨论】:

      猜你喜欢
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 2015-05-27
      • 2021-09-18
      • 2012-04-28
      • 2017-01-18
      相关资源
      最近更新 更多