如何调用Applescript中变量中存储的处理程序
AppleScript的新增功能,看起来变量可以设置为脚本或处理程序:如何调用Applescript中变量中存储的处理程序,applescript,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>> 关于Foo()的 日志“Foo” 完福 关于Bar() 日志“条” 端杆 将MyHandl
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>>
关于Foo()的
日志“Foo”
完福
关于Bar()
日志“条”
端杆
将MyHandler设置为{Foo,Bar}
将x设置为myHandlers中的第一项
日志x--
现在如何调用“x”?在官方文档中找不到此信息;尝试了一些关键字,如“run”、“exec”,但都不起作用。不要这样做–这是一种未定义的行为,不能按预期工作。(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"
有一些[1]你可能会觉得有用;e、 g.查看列表
库的排序列表
命令和文本
库的搜索文本
命令,这两个命令都采用可选参数,使用此技术启用用户可自定义的行为
[1] 顺便说一句,也可以随意愚弄我的请求,包括10.13中的那些库;他们收到的请求越多,他们就越有可能这样做。不要这样做–这是一种未定义的行为,不能按预期工作。(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"
有一些[1]你可能会觉得有用;e、 g.查看列表
库的排序列表
命令和文本
库的搜索文本
命令,这两个命令都采用可选参数,使用此技术启用用户可自定义的行为
[1] 顺便说一句,也可以随意愚弄我的请求,包括10.13中的那些库;他们收到的请求越多,就越有可能这样做