是否需要恢复文本项分隔符?

问题描述 投票:0回答:4

通常推荐的使用文本项分隔符的方式是这样的:

set tid to AppleScript's text item delimiters
set AppleScript's text item delimiters to "x"
set l to text items of "aaxbb"
set AppleScript's text item delimiters to tid
l

不过我通常会这样做:

set text item delimiters to "x"
text items of "aaxbb"

http://macscripter.net/viewtopic.php?id=24725:

重要的是要注意消息:“总是把它们放回去”。 AppleScript 会记住它的定界符设置。即使您在脚本编辑器中打开新的第二个脚本,您在第一个中设置的分隔符也会在第二个中应用。

虽然我无法重现它。某些版本的 OS X 中的行为是否发生了变化?

AppleScript:权威指南

只要 AppleScript 脚本组件的这个实例存在,文本项定界符的值就会持续存在。因为您可能会在存在此脚本组件的情况下运行多个脚本,其中任何一个都可能设置文本项定界符,所以不对文本项定界符的值做任何假设是明智的。

情况仍然如此吗,或者您能举出文本项定界符属性影响其他脚本的任何示例吗?

applescript
4个回答
3
投票

我记得读过一些关于您正在谈论的更改的内容,不再需要重置它们,但是在谷歌搜索后我找不到任何相关信息。因此,我做了一个快速测试。我制作了这两个脚本并在 AppleScript 编辑器中运行它们。首先这个...

set text item delimiters to "something"
return text item delimiters

然后这个...

return text item delimiters

第二个脚本返回 {""}。所以看起来第一个脚本并没有影响第二个。我在 10.6 和 10.8 中对此进行了测试,结果相同。

这是 applescript 发行说明。我找不到 10.7 或 10.8 的发行说明。搜索他们也没有找到关于这个主题的任何内容......

http://developer.apple.com/library/mac/#releasenotes/AppleScript/RN-AppleScript/RN-10_3/RN-10_3.html#//apple_ref/doc/uid/TP40000982-CH103-SW1

因此我没有明确的答案给你。每个人都说要重置它们,但我的简单测试表明这不是必需的。

你也是对的,你不需要告诉块之外的“Applescript”。


3
投票

我在 https://developer.apple.com/library/mac/#documentation/applescript/conceptual/applescriptlangguide/conceptual/ASLR_fundamentals.html 部分 AppleScript 基础 > AppleScript 中的全局常量 > 文本项定界符中找到了这个花絮:


如果您在脚本编辑器中更改文本项定界符属性,它将保持更改状态,直到您恢复其先前的值或直到您退出脚本编辑器并再次启动它。如果您在脚本应用程序中更改文本项定界符,它会在该应用程序中保持更改,直到您恢复其先前的值或直到脚本应用程序退出;但是,分隔符不会在脚本编辑器或您运行的其他脚本应用程序中更改。



0
投票

如果你运行一个脚本应用程序,那么我想从技术上讲没有必要让它们休息,因为一旦它退出,它就退出了!

但是如果您在脚本编辑器中运行脚本,那么对定界符的更改将保留在脚本编辑器中的该脚本中。我今天才看到。

但是几年前发生的变化是它NOT影响other脚本/脚本编辑器中打开的窗口。

此外,当作为应用程序运行时,它只会影响该特定脚本。


0
投票

这与AppleScript 的文本项定界符 更改是否影响其他脚本无关,而是更改影响整个脚本 你在哪里做。

在一个有很多处理程序的大型脚本中,很难跟踪并且很容易忘记此更改仍然有效,这可能导致您不得不花费大量时间和煞费苦心地寻找在哪里隐藏的错误已经潜入。

因此,我对这个问题的回答(对于那些想要编写易于调试的脚本和脚本库的人)是这样的:-以防万一,总是恢复原始 AppleScript 的文本项分隔符,因为这是一个全局属性.

© www.soinside.com 2019 - 2024. All rights reserved.