2013-04-09 66 views
0

我正在制作一个TON功能的应用程序。我的问题是,applescript似乎有一个切点。经过一定数量的行后,脚本停止工作。它基本上只能工作到结束。一旦它达到那一点,它就会停止。我已经移动了代码,以确保代码中不存在错误。帮帮我?AppleScript具有行数限制。

+2

它只工作到结束?呃......是我打错了还是不明白? – FatalError 2013-04-09 14:41:43

+0

@FatalError这不是一个错字,但它有点模糊。除了一定的脚本长度以外,一切都可以工作。 – 2013-04-09 14:54:48

+0

AppleScript确实有各种实际的限制,导致脚本一旦变得太长就开始失败。但是,当发生这种情况时,您将开始看到堆栈溢出和其他类型的错误出现,而不是简单地停止在某个点上的脚本。 你碰巧在脚本中有块风格的评论(* ... *)吗?这些类型的注释规则很复杂,并且可能会意外转义大量代码块。例如,如果在块注释中有未封闭的字符串文字,就会发生这种情况。 – 2013-04-09 16:15:48

回答

0

我可能是错的,但我相信一个长脚本不是放置代码的好方法。 很难阅读,调试或维护,因为零件中的轻微变化可能会对其他零件产生意想不到的后果。

如果您的脚本很长,我建议您将代码分成多个部分。

首先,如果代码的某些部分被多次重复使用,您可以使用函数。 这些函数的另一个好处是你可以独立于其余的执行代码验证它们。 此外,它使您的代码更易于阅读。

on doWhatYouHaveTo(anArgument) 
say "hello!" 
end doWhatYouHaveTo 

如果这些函数被不同的脚本使用,你可能希望你的函数在你需要调用的独立库中。

set cc to load script alias ((path to library folder as string) & "Scripts:Common:CommonLibrary.app") 
cc's doWhatYouHaveTo(oneArgument) 

最后一件事,我有时做的是调用一些参数的不同的脚本,如果长码适合用于略有不同的用途:

run script file {mainFileName} with parameters {oneWay} 

最后这招有很大尚未好奇好处:它可以加速执行时间,这是我从来没有解释过的原因(当我说加速时,我说对于相同的代码,执行时间减少了17次左右)。