gpt4 book ai didi

swift - 在 Swift 中将具有多个参数的函数作为闭包传递

转载 作者:可可西里 更新时间:2023-11-01 01:37:41 27 4
gpt4 key购买 nike

是否可以将具有多个参数的函数/方法视为 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com