gpt4 book ai didi

swift - 为什么以及何时可以在 Swift 中使用更短的方法签名?

转载 作者:搜寻专家 更新时间:2023-11-01 06:02:19 25 4
gpt4 key购买 nike

为什么以及何时可以在 Swift 中使用更短的方法签名,即使它们不存在于官方 Apple Docs 中?

例如:

let workerQueue = DispatchQueue(label: "com.test.worker", attributes: .concurrent)

当我浏览文档时,我看到的唯一方法是:

func async(group: DispatchGroup?, qos: DispatchQoS, flags: DispatchWorkItemFlags, execute: () -> Void)

func asyncAfter(deadline: DispatchTime, execute: DispatchWorkItem)

那么这如何以及为什么可能:

workerQueue.asynch(group: slowAddGroup) {
//...
}

最佳答案

这种特殊的简写可能有两个原因:输入参数的默认值和尾随闭包。查看函数的实际类型签名:

func async(group: DispatchGroup? = default, qos: DispatchQoS = default, flags: DispatchWorkItemFlags = default, execute work: @escaping () -> Void)

你可以清楚地看到,除了闭包之外,所有的输入参数都有默认值。如果省略其中任何一个,编译器将使用默认值。

由于 work 是一个闭包,它是函数的最后一个输入参数,作为一种简写符号,您可以将它移到括号之外,并在函数调用之后写入它,称为一个trailing closure .

关于swift - 为什么以及何时可以在 Swift 中使用更短的方法签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46005843/

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