gpt4 book ai didi

Swift编程语言,属性以句点开头是什么意思

转载 作者:搜寻专家 更新时间:2023-10-31 21:51:22 26 4
gpt4 key购买 nike

例如,在下面这行代码中:

DispatchQueue.global(qos: .userInitiated).async { ... }

为什么 .userInitiated 以句点开头?这是遵循 Objective C 还是特定于 Swift?

最佳答案

注意:TLDR 版本在底部

这叫做 Implicit member expression .

Implicit Member Expression

An implicit member expression is an abbreviated way to access a member of a type, such as an enumeration case or a type method, in a context where type inference can determine the implied type.

所以只要 Swift 知道类型,你通常可以省略键入它,例如

let colour: UIColor = .red  

它通常用于枚举值和静态类型,可用于将参数传递给上面的 DispatchQueue 示例中的函数。另一个简化的例子是:

enum Colors {
case yellow, blue, red, green
}

所以如果你有这个功能..

func draw(withColor: Colors) {

}

你应该能够像这样传递带.prefix 的枚举

draw(withColor: .yellow)

这是一个快捷方式的更详细的方式是:

draw(withColor: Colors.yellow)

解决方案

具体回答你的问题,这里的.userInitiated其实是DispatchQoS上的一个静态属性所以它只是输入 DispatchQoS.userInitiated 的一种更短的方式。 Swift 允许您缩短它,因为它知道预期的类型是 DispatchQoS

关于Swift编程语言,属性以句点开头是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38815075/

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