2013-04-09 68 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次左右)。