在Swift中将具有多个参数的函数作为闭包传递
是否可以在Swift中将具有多个参数的函数/方法视为闭包?我特别想问的是,初始函数名与其他函数名相同,并且通过其参数的数量/类型/名称来区分。例如,以以下内容为例:在Swift中将具有多个参数的函数作为闭包传递,swift,function,closures,Swift,Function,Closures,是否可以在Swift中将具有多个参数的函数/方法视为闭包?我特别想问的是,初始函数名与其他函数名相同,并且通过其参数的数量/类型/名称来区分。例如,以以下内容为例: class Foo { func bar(bar: String) { print("bar: \(bar)") } func bar(bar: String, baz: String) { print("bar: \(bar), baz: \(baz)") } } let foo = Fo
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(uz:)
分配给bar2
。这在Swift中可能吗?如果是,怎么做?只需写
let bar2: (String, String) -> () = foo.bar
编译器实际上根据您为bar2
指定的类型推断出正确的方法
然后调用bar2(“hi”,“hi2”)
将输出
酒吧:嗨,巴兹:嗨
请注意,省略特定类型的bar2
将导致编译器抱怨:错误:“bar”的用法模棱两可
类似的问题:。我不太清楚为什么我不能跳,但确实这样做了。谢谢