2016-11-03 32 views
0

新来的AppleScript处理程序,它看起来变量可以被设置为脚本或处理程序:如何调用存储在一个变量中的AppleScript

on Foo() 
    log "Foo" 
end Foo 

on Bar() 
    log "Bar" 
end Bar 

set myHandlers to {Foo, Bar} 
set x to the first item in myHandlers 
log x -- <<handler Foo>> 

现在我该如何调用“X”?在官方文档中找不到这些信息;尝试了一些关键字,如“运行”,“执行”,都不工作。

回答

2

不这样做 - 这是一个未定义的行为,并不按预期方式工作。 (AppleScript的处理程序没有关闭)。正确的方法是,以每个包裹在处理脚本对象和分配这些:

script Foo 
    on doit() 
    log "Foo" 
    end doit 
end script 

script Bar 
    on doit() 
    log "Bar" 
    end doit 
end script 

set myHandlers to {Foo, Bar} 
set x to the first item in myHandlers 
x's doit() -- logs "Foo" 

有一些examples here [1],你可能会发现有用的;例如请参见List库的sort list命令和Text库的search text命令,这两个命令都采用可选参数,这些参数使用此技术来启用用户可自定义的行为。


[1] BTW,还随意欺骗我Radar ticket要求苹果包括10.13这些库;他们获得的要求越多,他们做这件事的可能性就越大。

相关问题