是否可以将具有多个参数的函数/方法视为 Swift 中的闭包?我特别询问初始函数名称与其他函数相同,并通过其参数的数量/类型/名称来区分的情况。例如,采用以下内容:
class Foo {
func bar(bar: String) { print("bar: \(bar)") }
func bar(bar: String, baz: String) {
print("bar: \(bar), baz: \(baz)")
}
}
let foo = Foo()
let bar1: (String) -> () = foo.bar
let bar2: (String, String) -> () = ???
单参数 bar(_:)
函数可以分配给 (String) -> ()
类型的变量,就像分配给 bar1 时所做的那样
。但是,我不知道如何将 bar(_:baz:)
分配给 bar2
。这在 swift 中可能吗?如果是这样,怎么办?
最佳答案
简单写
let bar2: (String, String) -> () = foo.bar
编译器实际上根据您为 bar2
指定的类型推断出正确的方法。
然后调用bar2("hi", "hi2")
将会输出
bar: hi, baz: hi2
请注意,省略 bar2
的特定类型将导致编译器报错:
错误:“bar”的使用不明确
关于swift - 在 Swift 中将具有多个参数的函数作为闭包传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34516856/