AppleScript 处理程序中的可选参数

2024-02-01

The Applescript 文档 https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/conceptual/ASLR_about_handlers.html说从 Yosemite 开始,处理程序的参数可以是可选的。

从“参数规格”部分:

带标签的参数可以通过在形式参数名称后面加上 :literal 来声明默认值。这样做会使参数在调用时成为可选参数。例如,这声明了一个 make 处理程序,其 with data 参数具有默认值:

on make new theClass with data theData : missing value

现在可以在不提供 with data 参数的情况下调用该处理程序;处理程序将看到数据设置为指定的默认缺失值,然后可以对其进行测试并进行适当处理。

因此,由于需要一个带有可选参数的处理程序,我尝试创建一个。我已经做到了这一点:

set theResult to Create of me given the string:"stuff", info:"this"

on Create given info:missing value, thestring:"stuff"
    if info is missing value then
        set present to false
    else
        set present to true
    end if
    return {present, thestring}
end Create

它可以编译,但给出错误“变量 thestring 未定义。”

如果我只用一个参数调用它:

set theResult to Create of me given thestring:"stuff"

我收到错误:“创建时缺少信息参数。”即该参数毕竟不是可选的。

如何获取在 Applescript 处理程序中工作的可选参数?


为了利用可选的标记参数,处理程序定义必须为您想要可选的参数分配一个默认值。然后,当调用者不提供该标记参数时,将使用默认值。

这是一个使用用户定义标签的示例,我发现它比神奇的 AppleScript 定义标签(of、by、for 等)更清晰

SayWhat given greeting:"Hola", farewell:"Adios"
SayWhat given greeting:"Aloha"
SayWhat given farewell:"Ciao"

on SayWhat given greeting:strGreeting : "Hello", farewell:strFarewell : "Goodbye"
    log "You say " & strGreeting & "; I say " & strFarewell
end SayWhat

(*You say Hola; I say Adios*)
(*You say Aloha; I say Goodbye*)
(*You say Hello; I say Ciao*)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AppleScript 处理程序中的可选参数 的相关文章

随机推荐

  • 选择列表中的 HTML 复选框

    我正在尝试在选择列表中构建一个复选框列表 例如此处的国家 地区列表 链接文本 https careers microsoft com Search aspx 我正在使用 Asp net MVC 因此它需要是 pure html JavaSc
  • Elasticsearch:如何删除映射类型而不删除整个索引?

    是否可以从索引中删除单个映射类型而不删除整个索引 https www elastic co guide en elasticsearch reference current indices delete mapping html https
  • 如何使用 data-href 打开新选项卡

    我正在使表格行可单击 但单击后我想打开一个新选项卡 我尝试使用data target但这没有用 tr class table row tr 可以这样做 jQuery JSFiddle 1
  • 如何使用 Youtube API 为 Youtube 视频添加字幕?

    是否有可能添加字幕 to Youtube视频使用Google Youtube API v3 重要条件 视频不是所有者 任务 使用所选语言添加自定义字幕Google APIs Client Library for JavaScript Goo
  • Python MS Word [重复]

    这个问题在这里已经有答案了 可能的重复 在 Python 中读取 写入 MS Word 文件 https stackoverflow com questions 188444 reading writing ms word files in
  • NSString 的 Base64 编码 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • TCP 数据包“不分段”的好处?

    我们的一位客户在将数据从我们的应用程序 在他们的 PC 上 提交到服务器 不同的地理位置 时遇到问题 当发送低于 1100 字节的数据包时 一切正常 但在此之上 我们看到 TCP 每隔几秒重新传输一次数据包 但没有得到任何响应 我们用于测试
  • constexpr(即常量初始化)模板变量的初始化顺序是否有保证?

    From en cppreference com w cpp language initialization http en cppreference com w cpp language initialization 无序动态初始化 si
  • 如何在 Angular 2 中有条件地加载模块

    下面的代码可以根据不同的 Angular cli 环境变量有条件地加载模拟服务 然而 它有一个副作用 即模拟服务被内置到最终的转码和缩小的输出文件中 是否有更好的方法来完成Angular2中的延迟加载模块 应用程序模块 ts import
  • “关联表”(多对多关系)的正确名称是什么[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关联表 的正确或最流行的名称是什么 我听说过查找 关联 解析 映射和联结表 没有 正确 的名称 但学术名称将是 关联表 请参阅 维基百科文章关联
  • 使用 Ant 创建战争时 JSP 不会被复制

    我正在使用以下 Ant 脚本来创建一个简单的 Web 应用程序之战
  • 如何从 GradientDrawable 获取颜色

    首先 我将绿色设置为View mIcon的背景 View mIcon findViewById R id xxx GradientDrawable gdraw GradientDrawable mContext getResources g
  • TransactionScope Complete() 在退出 USING 语句之前不会提交事务

    我遇到了这种奇怪的行为 只有当using退出而不是调用时退出scope Complete using TransactionScope scope new TransactionScope TransactionScopeOption Re
  • 如何将 Tomcat 6 库管理到 %TOMCAT_HOME%/lib 下的子文件夹中?

    我使用 Tomcat 6 0 20 和 JDK 1 6 0 13 如何从子文件夹加载库 TOMCAT HOME lib 无需将 jar 从子文件夹中取出并直接放入 TOMCAT HOME lib 我想这样做的原因是因为许多应用程序将共享大量
  • jQuery 日期格式

    如何使用 jQuery 设置日期格式 我正在使用下面的代码但出现错误 txtDate val format date new Date dd M yy 请提出一个解决方案 在您的页面中添加 jquery ui 插件 txtDate val
  • 多种情况下的熊猫面膜

    在我的数据框中 我想用 nan 替换低于 1 和高于 5 的每个值 这段代码有效 persDf persDf mask persDf lt 1000 我得到了作为 nan 的所有值 但这个没有 persDf persDf mask pers
  • 模型上的自定义保存方法 - django

    我正在重写我的模型之一上的保存方法 def save self args kwargs self set coords super Post self save args kwargs def unicode self return sel
  • onDestroy 关闭应用程序后崩溃

    在重写 onDestroy 方法后 我遇到了一些问题 我的应用程序是一个音乐播放器 使用我需要的媒体播放器实例 如果没有播放音乐 则强制释放它 到目前为止 这是我的代码 为了实现这个技巧 我都重写了 onKeyDown 和 onDestro
  • 如何使 Metro GridView 中的组使用不同的布局?

    我正在编写一个 Windows 8 Metro 应用程序 我正在尝试绘制一个包含三个组的 GridView 我希望其中一组的项目布局与其他组不同 我以前在 WPF 中使用过选择器 所以我认为这是一个很好的途径 所以我尝试了 GroupSty
  • AppleScript 处理程序中的可选参数

    The Applescript 文档 https developer apple com library mac documentation AppleScript Conceptual AppleScriptLangGuide conce