Swift 中忽略参数的用途是什么

2023-11-26

在 Swift 中,您可以编写以下内容:

func foo(_:Int) -> { return 1 }

其中下划线是被忽略的参数。我只是因为文档才知道这一点,但想不出任何关于为什么你会这样做的用例。我错过了什么吗?


在以下情况下,忽略参数(或元组的成员,它们非常接近同一事物)是有意义的:

  • 您正在重写超类函数或实现由协议定义的函数,但该函数的实现不需要参数之一。例如,如果您挂钩应用程序启动但不需要对共享的引用UIApplication该方法中的实例:

    override func application(_: UIApplication!, didFinishLaunchingWithOptions _: NSDictionary!) -> Bool { /* ... */ }
    
  • 您提供了一个闭包(ObjC 中的块)作为某个 API 的参数,但您对该 API 的使用并不关心闭包的参数之一。例如,如果您要提交对照片库的更改并希望将谨慎抛在脑后,则可以忽略success and error完成处理程序中的参数:

    PHPhotoLibrary.sharedPhotoLibrary().performChanges({
        // change requests
    }, completionHandler: { _, _ in
        NSLog("Changes complete. Did they succeed? Who knows!")
    })
    
  • 您正在调用一个提供多个返回值的函数/方法,但不关心其中之一。例如,假设假设NSColor方法将组件作为元组返回,您可以忽略 alpha:

    let (r, g, b, _) = color.getComponents()
    

其背后的原因是它使您的代码更具可读性。如果您为最终没有使用的参数(或元组成员)声明了一个本地名称,那么阅读您的代码的其他人(很可能就是您几个月后的版本)可能会看到该名称并感到好奇它在函数体中的何处或如何使用。如果您预先声明您忽略该参数(或元组成员),则可以清楚地表明无需在该范围内担心它。 (理论上,这还可以为编译器提供优化提示,这也可能使您的代码运行得更快。)

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

Swift 中忽略参数的用途是什么 的相关文章

随机推荐

  • ios应用程序用icu编译sqlite fts,但是当我输入像“z”这样的字母时它无法得到完美的答案

    在sqlite我中 执行一个create virtual MyTable tokenize icu id text subject text abstract text 然后就成功了insert info MyTable id subjec
  • ajax成功后重新加载数据表

    我使用 JQuery 数据表 我在ajax成功时将数据发送到json文件中的数据表onclick 第一次单击一切都很好 但下一次单击我只得到正确的数据和dataTables info的错误值 它始终显示dataTables info的第一个
  • std::条件编译时分支评估

    编译这个 template lt class T class Y class Args gt struct isSame static constexpr bool value std conditional lt sizeof Args
  • Apache Solr java 教程 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我是 Apache sol
  • POST/PUT Json RESTful 请求 Grails 的问题

    嗨 我有一个 grails 宁静的代码 我完善了一个 Json 获取和删除请求 我的问题是 我想使用 json 执行 Put 或 post 请求 但如果我使用程序来执行此操作 它会出现错误 我无法执行此操作 这是我的代码 一类 packag
  • jquery masonry 在初始页面加载时崩溃,单击“主页”菜单按钮后工作正常

    我的 jquery masonry 设置在初始页面加载时工作得很奇怪 似乎将图像放置在第一行中 第二行的位置与第一行重叠 第三行的位置相同 页面加载后 您可以单击主页按钮或徽标并重新加载页面 它可以正常工作 我在functions php中
  • ASP.NET XML 解析错误:找不到元素行号 1,列 1 错误

    嘿 我发现了一个奇怪的喜怒无常的页面 它随机地给我以下错误 XML Parsing Error no element found Location http kj2011 site 2011 nonprofit database overv
  • Linq To Sql 和全文搜索 - 可以做到吗?

    有没有人想出一种执行全文搜索的好方法 FREETEXT CONTAINS 对于使用标准 LinqToSql 查询语法的任意数量的任意关键字 我显然希望避免必须使用存储过程或必须生成动态 SQL 调用 显然 我可以将搜索字符串输入到使用 FR
  • 如何在某些元素上禁用 Cufon?

    我目前在您的网站上使用 Cufon 其类似于Cufon set fontFamily DIN Medium replace h1 现在 对于单个 H1 标签 我希望禁用 Cufon 这不会将 H1 标签更改为任何其他标签 它必须保持原样 如
  • Delphi非对称加密

    我正在寻找非对称加密算法的 Delphi 实现 而不依赖于外部 DLL 有可用的吗 我的目标是使用公钥 私钥对加密 解密字符串 或字节数组 安全黑盒Eldos 提供原生 全面的解决方案 包括证书管理和对外部加密设备 即 USB 令牌 的访问
  • 在 Android 中以管理员身份禁用应用程序之前需要密码

    我正在开发一个作为Admin 我可以使用以下代码来做到这一点 演示 DeviceAdminReceiver jav public class DemoDeviceAdminReceiver extends DeviceAdminReceiv
  • 使用 Bouncy Castle 签署 CSR

    我找不到任何描述如何使用 BC 签署 CSR 的代码 文档 作为输入 我有一个 CSR 作为字节数组 并且希望获得 PEM 和 或 DER 格式的证书 我已经走到这一步了 def signCSR csrData Array Byte ca
  • View 被推出 ConstraintLayout 中的约束

    我有一个约束布局与图像视图和 3 个链式文本视图 with a spread inside链条款式
  • R:将“特殊”字母转换为UTF-8?

    我在匹配表时遇到问题 其中一个数据帧包含特殊字符 而另一个数据帧不包含特殊字符 示例 做 安娜县 vs 多纳安娜县 这是一个可以重现输出的脚本 library tidyverse library acs tbl df acs fips pl
  • C++11 初始值设定项列表失败 - 但仅限于长度为 2 的列表

    我发现了一个不起眼的日志记录错误 因为长度为 2 的初始值设定项列表似乎是一个特殊情况 这怎么可能 该代码是使用 Apple LLVM 版本 5 1 clang 503 0 40 编译的 使用CXXFLAGS std c 11 stdlib
  • 如何在 SQLAlchemy 中使用 joinload/contains_eager 来实现启用查询的关系(lazy='dynamic' 选项)

    我有 SQLAlchemy 声明的以下模型类 class User Base id Column Integer primary key True name Column String nullable False unique True
  • 在 Matplotlib 中以科学记数法显示第一个小数位

    我目前正在使用 y 轴的科学记数法生成不同的数字 导致某些图上的刻度为 2 或 6 而另一些图上的刻度为 2 5 或 8 9 我希望 y 轴上始终保留一位小数的刻度 即使它添加了零 这是一个例子 import matplotlib pypl
  • 了解 Python 配置文件输出

    我正在尝试使用 Python 分析器来加速我的代码 我已经能够确定几乎所有时间都花在哪个特定函数上 但我无法弄清楚该函数中的时间花在哪里 下面是配置文件输出 其中显示 appendBallot 是罪魁祸首 耗时近 116 秒 下面 我有 a
  • 如何在Linux内核设备驱动程序中使用定时器?

    我想在 Linux 设备驱动程序中实现一个计数器 该计数器在每个固定时间间隔后递增 我想在计时器的帮助下做到这一点 示例代码片段将非常有用 看看下面的文章IBM Developerworks 计时器和列表 有一个如何使用 Linux 内核定
  • Swift 中忽略参数的用途是什么

    在 Swift 中 您可以编写以下内容 func foo Int gt return 1 其中下划线是被忽略的参数 我只是因为文档才知道这一点 但想不出任何关于为什么你会这样做的用例 我错过了什么吗 在以下情况下 忽略参数 或元组的成员 它