[英]Swift - Naming Function Type Parameters
我正在尝试为我的案例找到一种命名 function 类型参数的方法。 为了更清楚,让我分享一些代码。
class ViewController: UIViewController {
private lazy var testView: TestView = {
let view = TestView()
view.action = action
return view
}()
func action() {
//stuff
}
}
class TestView: UIView {
var action: () -> () = {}
@objc func buttonAction(_ sender: UIButton) {
action()
}
}
上面的代码运行良好,将UIButton
动作从View
注入到Controller
但当有要传递的参数时会变得更糟。 当我尝试将TestView
中的action
更改为,
var action: (name: String, surname: String) -> () = { _, _ in }
它不允许我命名String
参数。 之后我尝试将其更改为使用元组,
var action: ((name: String, surname: String)) -> () = { _ in }
TestView
中的代码有效。 但是我无法匹配ViewController
中的view.action = action
类型。
我尝试这样做有两个原因。 其中之一是在View
内部没有任何类型的逻辑,另一个是在有 2 个以上的参数要发送到Controller
时,通过其给定名称轻松识别并避免混淆ViewController
内部的参数。
最后,我知道我可以使用委托。 但在我看来,它有它自己的问题。 自从我开始努力命名协议以来,我一直在尝试减少项目中的Delegate
。
提前致谢。
swift 不允许在 function 声明中使用命名参数,因此您可以执行以下操作:
class TestView: UIView {
// var action: () -> () = {}
var action: (_ name: String , _ surname: String ) -> () = { _, _ in }
@objc func buttonAction(_ sender: UIButton) {
action("name", "surname")
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.