是否可以将具有多个参数的函数/方法视为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中可能吗?如果是这样,怎么样?
答案 0 :(得分:2)
简单写一下
let bar2: (String, String) -> () = foo.bar
编译器实际上是根据您为bar2
指定的类型推断出正确的方法。
然后调用bar2("hi", "hi2")
将输出
bar:嗨,baz:hi2
请注意,省略特定类型的bar2
会导致编译器抱怨:
error: ambiguous use of 'bar'