swift - swift - 初始化 UIContextualAction 类
问题描述
UIContextualAction类有一个具有以下签名的初始化程序。
public convenience init(style: UIContextualAction.Style, title: String?, handler: @escaping UIContextualAction.Handler)
可以使用以下代码片段创建UIContextualAction类的实例。
let action = UIContextualAction(style: .normal, title: "Delete") { (action, view, completion) in
completion(true)
}
我不明白的是第三个参数(即handler)传递给类初始化程序的方式。
为什么在传递delete参数的值后,处理函数在单独的大括号内传递而不传递它?
还有其他方法可以获得相同的输出吗?
解决方案
这两种写法是一样的:
let action = UIContextualAction(style: .normal, title: "Delete") { (action, view, completion) in
completion(true)
}
let action2 = UIContextualAction(style: .normal, title: "Delete", handler: { (action, view, completion) in
completion(true)
})
您可以查看Trailing Closures的文档:
如果您需要将闭包表达式作为函数的最终参数传递给函数并且闭包表达式很长,则将其编写为尾随闭包会很有用。尾随闭包写在函数调用的括号之后,即使它仍然是函数的参数。当您使用尾随闭包语法时,您不会将闭包的参数标签作为函数调用的一部分编写。
推荐阅读
- python - Python 多语言最大语言代码长度
- javascript - 通过 axios 发送 HTML 表单
- angular - Angular6 NgModel输入绑定到异步数据不起作用
- c# - 为什么这些不一样?为什么 `type.GetType() is Test` 在 C# 中不是真的?
- vba - 使用VBA在word中做一个简单的计算
- python - 带有最近日期的条形图,其中日期是日期时间索引
- apache-kafka - 如何让 kafka 经纪人向我们发送其指标?
- javascript - Java Script:赋值运算符不适用于矩阵
- android - 无法解析模块“反应导航”
- java - 需要帮助创建类以反向返回名称并返回首字母