gpt4 book ai didi

Swift:反斜杠点 "\."是什么意思?

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:27 25 4
gpt4 key购买 nike

我是后端 Swift 的新手,我想我会使用 Vapor 来快速启动并运行一个副项目...我运行了 vapor new WebServer --template=auth-template,现在我想弄清楚 return\.email 是什么意思。有关更多上下文,我在 WebServer > Sources > App > Models > Users.swift 中查找:

import Authentication
import FluentSQLite
import Vapor

/// Allows users to be verified by basic / password auth middleware.
extension User: PasswordAuthenticatable {
/// See `PasswordAuthenticatable`.
static var usernameKey: WritableKeyPath<User, String> {
return \.email
}

// ...
}

下面是用户类的定义:

/// A registered user, capable of owning todo items.
final class User: SQLiteModel {
// {omit extra code} ...

var email: String

// {omit extra code} ...

/// Creates a new `User`.
init(id: Int? = nil, name: String, email: String, passwordHash: String) {
// {omit extra code} ...
self.email = email
// {omit extra code} ...
}
}

这个反斜杠点符号是什么意思?

最佳答案

tl;dr:我们看一下 Swift 语言引用,果然,这种反斜杠点符号的用法称为 key-path-expression .

(至此,问题已得到充分回答。)

关于如何获取隐藏文档的更实际的方法:

从您发布的代码中可以看出,User 类包含一个 property命名为 email

请注意,假设您正在使用 Xcode,如果您将 return\.email 替换为 return\,您将得到编译错误 "Expected expression Swift key path 中的路径”,所以这暗示这个反斜杠点表示法可能与称为 key path 的东西有关。

从关于键路径的文档中,我们看到我们也可以编写 \User.email(您可以在 Xcode 中尝试它而不会出现编译错误)。

了解该代码中发生的事情的更大背景:

因此,从语义上讲,要理解您正在查看的 usernameKey 声明的含义,我们可能需要了解什么是 WritableKeyPath。简而言之,从文档中,我们看到 WritableKeyPath 是:“支持读取和写入结果值的关键路径。”

因此,我们看到 usernameKey 声明接受一个 WritableKeyPath 对象并返回一个 String,即 User.email.

此外,显然 User 类需要此 usernameKey 属性以符合 PasswordAuthenticatable 协议(protocol),该协议(protocol)在第一行通过 import 导入身份验证(如果您想在那里探索,请查看 Dependencies > Auth 2.0.0 > Authentication > Basic > BasicAuthenticatable.swift)。

关于Swift:反斜杠点 "\."是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52543502/

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