Reference 在AppleScript中,为什么可以';是否声明对处理程序本地变量的引用?

Reference 在AppleScript中,为什么可以';是否声明对处理程序本地变量的引用?,reference,scope,applescript,handler,Reference,Scope,Applescript,Handler,为什么不能声明和使用对变量的引用,除非引用的变量是全局范围的?请解释导致以下现象的运行时内存或对象结构: 脚本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

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

脚本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
on foo()        
    global l
    set l to {0}
    set lref to a reference to l
    return item 1 of lref
end foo

foo()
脚本C成功:

on run
    set l to {0}
    set lref to a reference to l
    return item 1 of lref
end run
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中的对象,因此没有引用。

因为“引用”与对象说明符是同一个东西,所以不能引用不存在的东西(或包含在不存在的东西中)关于AppleScript的对象

全局变量由顶级脚本对象拥有——它实际上是一个没有初始值设定项的属性。(您还可以对脚本属性进行引用;它不必是严格的全局属性。)


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

并且可以指定对象的唯一方法是通过脚本初始化,正确吗?唯一可以指定对象的方法是通过脚本初始化,正确吗?可以在中找到模拟问题可以在中找到模拟问题