如何在AppleScript Library中直接存储变量,无需通过函数调用?
AppleScript 自定义库常量访问解决方案
你完全可以直接将值存储为变量使用,你遇到的报错是命名冲突导致的:你的Math库中同时定义了同名的infinity属性(property)和infinity()处理函数(handler),AppleScript 在 tell 作用域内会优先匹配处理函数,不带括号调用就会触发未定义错误。
两种可行实现方案
方案1:移除同名处理函数,直接用属性定义常量
修改Math脚本库内容,仅保留属性定义即可:
property infinity: 10 ^ 308.254715 -- biggest possible Number
调用时可选择两种写法:
- tell 块内直接访问
tell script "Math" return infinity -- 可正常返回属性值 end tell
- 不用 tell 块,直接通过
of关键字访问
return infinity of script "Math"
方案2:保留原有处理函数,明确指定访问属性
如果你需要同时保留属性和处理函数,调用时加its关键字明确标识要访问的是属性即可:
tell script "Math" return its infinity -- 明确访问属性,可正常返回 return infinity() -- 仍可正常调用处理函数 end tell
补充说明
如果你的数值是固定常量,不希望被其他脚本误修改,用处理函数形式会更稳妥,因为处理函数的返回值无法被外部改写;如果有修改需求,再选择属性存储即可。
内容的提问来源于stack exchange,提问作者gurkensaas
相关产品推荐
相关产品推荐

