【问题标题】:Syntax error on FOREACH ... ENDFOREACH loopFOREACH ... ENDFOREACH 循环上的语法错误
【发布时间】:2016-11-16 19:17:43
【问题描述】:

我在 IDL(版本 8.2.2)中有一个看似简单的 FOREACH 循环。在我的一生中,我不明白为什么会出现语法错误。我尝试用简单的FOR 循环替换FOREACH,结果相同。

删除 for 循环并单独运行语句可以正常工作(当然,为 file 硬编码单个值)。

FOREACH file, filenames DO BEGIN
   ; A number of
   ; statements that execute
   ; just fine
ENDFOREACH

结果:

ENDFOREACH
 ^
% Syntax error.

这都是在一个脚本中运行的,用@myscript调用

也许直接来自文档的更简单的示例会有所帮助:

我创建了一个脚本test.pro,从文档中复制/粘贴:http://www.harrisgeospatial.com/docs/BEGIN___END.htmltest.pro 的内容是:

arr = [1, 3, 5, 7, 9]
FOREACH element, arr DO BEGIN
   PRINT, element
ENDFOREACH

结果:

IDL> @test
       9

ENDFOREACH
 ^
% Syntax error.
  At: /mydir/test.pro, Line 4
IDL>

【问题讨论】:

  • 这里不会出错。 filesnames 是否已定义和初始化?一个简单的foreach/for 可能只有整数工作吗?
  • 我尝试用一​​个简单的for/endfor 替换它,同样的问题。我已经对文件名进行了三次检查,并使用现在发布的更简单的示例对其进行了复制。
  • 您确定您的问题是关于idl 而不是idl-programming-language

标签: idl idl-programming-language


【解决方案1】:

批处理文件(通过@myscript 调用)不能有复合语句,即带有BEGIN/END。把它变成一个过程/函数或一个主级程序。

【讨论】:

  • Ahhhhhh ::: 远处传来一阵黏糊糊的耳光::: 谢谢!
  • 或者,如果你真的想要,你可以使用“&”将它变成一个复合语句。例如: foreach element,arr do begin & blah blah & endforeach 你可以使用 $ 将其拆分为多行。
猜你喜欢
  • 2011-06-03
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-14
  • 2018-01-22
相关资源
最近更新 更多