gpt4 book ai didi

Swift:结构看起来像枚举大小写,后跟 (.)

转载 作者:行者123 更新时间:2023-11-28 11:25:35 27 4
gpt4 key购买 nike

我在看别人的框架代码,我发现其中一个函数的参数接受了一个输入,输入后面跟着(.),当我检查输入的类型时,我发现它是一个结构不是枚举,这让我很困惑

这是函数的屏幕截图,输入看起来像一个枚举案例:

参数的输入是(.caption2)

Function Parameter's Screenshot

下面是我如何发现参数类型是结构而不是枚举 Function parameter's Type

任何解释为什么参数看起来像枚举大小写?

谢谢

最佳答案

这种点语法不是为枚举保留的。它可用于相关类型的任何成员。

例如,考虑:

struct Foo {
struct Bar {
let value: Int
}
}

extension Foo.Bar {
static let baz: Foo.Bar = Foo.Bar(value: 42)
}

func qux(_ type: Foo.Bar) {
print(type.value)
}

因为 bazstruct 的静态成员,所以您可以执行以下操作:

qux(Foo.Bar.baz)

或者,或者,因为它期待一个 Foo.Bar 实例,所以简单地:

qux(.baz)

让我们考虑一个更实际的例子。例如,您可以定义自己的自定义通知:

extension Notification.Name {
static let myCustomNotification = Notification.Name("com.domain.app.myNotification")
}

然后,因为以下方法的 name 参数需要一个 Notification.Name,您可以执行如下操作:

NotificationCenter.default.addObserver(forName: .myCustomNotification, object: nil, queue: .main) { notification in
print(notification)
}

关于Swift:结构看起来像枚举大小写,后跟 (.),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58350542/

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