导致stackoverflow的简单AppleScript - 为什么?

时间:2012-12-29 22:12:01

标签: applescript stack-overflow

- 我确定这是重复的 -

我在O' reilly书中读过这篇文章(:

虽然没有理由):

在一个简单的AppleScript文件中:

script implicitRunHandlerScript
end script      

run implicitRunHandlerScript
      --    why does this lead to a stack overflow?

2 个答案:

答案 0 :(得分:3)

您发布的脚本包含一个名为implicitRunHandlerScript的子脚本和一个处理程序,即“隐式run处理程序”。隐式run处理程序包含一个语句:

run implicitRunHandlerScript

子脚本继承其父级的处理程序。因此,您的implicitRunHandlerScript继承了其父级的实现run处理程序。并且继承的隐式run处理程序调用{​​{1}}的{​​{1}}处理程序,因此它以递归方式调用自身。

阅读 AppleScript语言指南中的Defining Script ObjectsInheritance in Script Objects

答案 1 :(得分:0)

来自AppleScript: The Definitive Guide:

  

如果脚本对象没有显式的运行处理程序且没有可执行文件   隐式运行处理程序中的语句,告诉它运行可以有   不可预测的后果(这个事实几乎肯定是一个错误)。