没有尾随闭包支持具有默认参数值的方法?

2023-12-31

您可以将下面的代码放入 Playgrounds 中。

import UIKit

class MyClass {
  func foo(a: String, b: () -> ()) {
    b()
  }
  func bar(a: String = "a", b: () -> ()) {
    b()
  }
}

let object = MyClass()

object.foo("x") { () -> () in
  println("foo")
}

object.bar() { () -> () in
  println("foo")
}

object.bar()调用产生Missing argument for parameter 'b' in call

问题是:我做错了什么,或者具有默认参数值的方法不支持尾随闭包?


它看起来确实像尾随闭包的问题 - 这段代码有效:

object.bar(b: {  () -> () in
    println("foo") 
})

但是,如果删除外部名称:

func bar(a: String = "a", _ b: () -> ()) {
    b()
}

这不再有效:

object.bar({  () -> () in
    println("foo")
})

此外,使用具有字符串作为第二个参数的函数:

func test( val1: String = "a",  val2: String) {        
}

默认参数已正确分配,因此成功:

test("me")

这是与使用闭包不同的行为。

结论:如果至少有一个具有默认值的参数未指定,则具有默认值参数和尾随闭包的方法或函数将不起作用。为了避免尾随闭包,该函数仅在参数具有外部名称时才起作用。

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

没有尾随闭包支持具有默认参数值的方法? 的相关文章

随机推荐

  • C++ std::string 堆内存分配的保证?

    我的主要目标是避免动态内存分配 例如 我可以确定哪些 std string 方法将 不会分配新的堆内存吗 有没有办法禁止 std string 实例进行新分配 是否有标准的固定长度字符串类 例如 我可以确定哪些 std string 方法将
  • Resteasy 和文件上传:没有出现内容处置错误

    我有一个可以上传文件的休息资源 Path rest input public class InputResourceBean POST Path directory Consumes multipart form data public v
  • Angular 2 ng2-charts 甜甜圈添加文本

    我在用ng2 图表 http valor software com ng2 charts 基于chart js 我正在尝试在圆环图中间添加文本 但我无法设置文本或注册插件 有人可以帮忙吗 到目前为止 我发现了如何在 javascript 中
  • 从 java InputStream 打开图像文件

    我正在尝试使用运行程序的计算机的默认图像查看器打开打包在 jar 文件中的图像文件 我找到了许多关于如何使用 InputStream 访问打包在 jar 中的文件的答案 但是如何使用该 InputStream 打开这些文件 InputStr
  • Python 和文本文件中的 Pickle 模块

    我最近问了一个问题并收到了一个答案 我必须 腌制 我的代码 作为初学者 我不知道该怎么做 这是我的代码 users users append username password usersFile open users txt w for
  • 设计:将未经确认的电子邮件地址传递回登录页面

    当用户在我的 Rails 应用程序中注册帐户时 我使用默认的 Devise 行为向他们发送确认电子邮件 在网站上 用户填写注册表后 会自动重定向到登录页面 并显示一条警告通知 需要通过电子邮件确认其帐户 请通过电子邮件确认您的帐户 我希望警
  • Pandas Dataframe 中的多个最小值

    我有一个包含多个最小值的 pandas 数据框 但 min 函数只选择列上的一个 ABCD 0 000000 JKLM 0 016535 CAN1 0 381729 MET2 0 275013 INDI 0 149280 MAN3 0 00
  • 铸造浮动是否具有破坏性?

    在 PHP 中 我知道我们不应该这样做math在没有 bcmath 之类的东西的浮动上 但这仅仅是casting字符串浮动具有破坏性 会表达像 float 5 111 5 111 永远是真的吗 或者演员本身会将其更改为类似的内容5 1110
  • 如何让 Excel 从工作表上的查询表可靠地执行 sp_executesql?

    在 MS Excel 中 如果您使用 Microsoft Query 创建 QueryTable 并且 Microsoft Query 无法直观地呈现您的 SQL 查询 则不允许您为该查询提供参数 这是一种耻辱 所以有这个很棒的技术 htt
  • Angular 中的 ag-grid 加载时如何触发事件?

    Angular 中的 Ag grid 使用 showLoadingOverlay 函数在网格上显示加载栏 我如何知道我的角度农业网格已完成加载 gridReady如果使用 则应在数据设置后触发gridOptions rowData 如果您正
  • 如何为 Django 模型字段添加检查约束?

    子类化时db models Model 有时有必要添加额外的检查 约束 例如 我有一个Event模型与start date and end date 我想将验证添加到字段或模型中 以便end date gt start date 至少我知道
  • GKMinmaxStrategist 在最佳动作返回后修改模型

    我在相应的类中实现了 GKGameModel GKGameModelPlayer 和 GKGameModelUpdate 协议 在我请求最佳策略后 策略师更改了我的模型的董事会 我了解它的工作原理 制作模型的副本并尝试了所有动作 但我认为我
  • 为什么我不能使用切片模式来过滤 Window 迭代器?

    我有一个数字向量并使用windows 2 方法创建一个迭代器 为我提供相邻对 例如 向量 1 2 3 被转化为 1 2 2 3 我想使用find查找满足特定条件的切片的方法 fn step g u64 gt Option lt u64 u6
  • OctoberCMS:如何维持双向友谊关系?

    我正在延长rainlab user插件允许每个用户通过具有以下字段的简单中间表来拥有朋友 user id friend id status 我已经延长了User model use RainLab User Models User as F
  • CDI ViewScope 和 PrettyFaces:多次调用 @PostConstruct (JSF 2.2)

    我已经检查过类似的问题 这些问题声明 JSF 2 1 有这个错误 但我正在使用 JSF 2 2 让我们详细说明一下 我的环境 CDI 1 1 动态网络模块 3 0 爪哇 1 7 JSF 2 2 PrettyFaces 2 0 12 Fina
  • 如何使用 SSLSocket 接受 Java 自签名证书

    我花了很多时间浏览互联网来寻找解决方案 99 的示例都是针对 HTTPS 的 但我需要使我的代码能够与 SSL 服务器一起使用 我无法从中提取许可证 并且许可证是自签名的 我尝试使以下代码正常工作 SocketFactory factory
  • 使用 Control.Lens 的索引列表需要 Monoid 约束

    以下代码无法编译 LANGUAGE TemplateHaskell import Control Lens data MyType MyType Int data Outer Outer inners Inner data Inner In
  • 帮助制定三次缓动方程

    我有下面的代码 int steps 10 for int i 0 i lt steps i float t i float steps console log t t 输出以线性方式输出数字 如下所示 0 0 1 0 2 0 9 1 0 我
  • iText 5.5.3 PDFPCell:长文本在单元格中不正确(文本换行不正确)

    我正在尝试创建一个包含表格的波斯语 PDF 并且我想在其中写入内容 当我的绳子很长时 它不能正确适合单元格 感觉就像字符串颠倒地填充了单元格 我的意思是 例如当我想写 你好 我的朋友 怎么了 在单元格中 输出如下 这是怎么回事 我的朋友 你
  • 没有尾随闭包支持具有默认参数值的方法?

    您可以将下面的代码放入 Playgrounds 中 import UIKit class MyClass func foo a String b gt b func bar a String a b gt b let object MyCl