为什么在AppleScript的,你能不能申报变量的引用本地处理程序?(Why, in AppleS

2019-08-19 03:57发布

你为什么不能声明,除非引用的变量是全球范围的使用变量的引用? 请解释运行时内存或对象结构导致以下现象:

脚本A失败:

on foo()        
    set l to {0}
    set lref to a reference to l
    return item 1 of lref
end foo

foo()

脚本B成功:

on run
    set l to {0}
    set lref to a reference to l
    return item 1 of lref
end run

脚本C成功:

on foo()        
    global l
    set l to {0}
    set lref to a reference to l
    return item 1 of lref
end foo

foo()

另见: 你如何有效地AppleScript的一个处理程序中建立一个列表? 而为什么不能做的AppleScript凑firstValue到在本次测试的代码类型的参考?

Answer 1:

由于“参考”是同样的事情作为对象说明符,所以你不能做的东西的参考,是不是(或由东西是不包含)尽可能的AppleScript关注的对象。

全局变量由顶级脚本对象所拥有的 - 它真的没有初始化的属性。 (您也可以到一个脚本属性的引用;它不具有严格的全球)。

一个局部变量,在另一方面,是由它在处理程序的调用帧拥有,并且调用帧不是AppleScript的对象,因此,没有引用。



文章来源: Why, in AppleScript, can't you declare references to variables local to handlers?