当前位置: 首页 > 面试题库 >

Swift:反斜杠“ \。”的作用是什么 意思?

刁文光
2023-03-14
问题内容

我是后端Swift的新手,并且以为我会使用Vapor来快速在边项目上启动和运行…我运行了vapor new WebServer --template=auth-template,现在我试图弄清楚类似的return \.email意思。有关更多上下文,我在WebServer>源>应用程序>模型> 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
    }

// ...
}

这是User类的定义

/// 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类包含一个名为的属性email

请注意,假设您使用的是Xcode,如果将其替换return \.emailreturn \,则会出现compile-error
"Expected expression path in Swift key path",因此这表明该反斜杠点表示法可能与称为关键路径的东西有关。

从关于key-path的文档中,我们看到我们也可以编写\User.email(并且您可以在Xcode中尝试它,而没有编译器错误)。

了解该代码中发生的事情的更多上下文:

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

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

此外,很明显,User类需要此usernameKey属性才能与PasswordAuthenticatable协议兼容,该协议是在第一行中导入的import Authentication(如果您愿意在此处进行探索,请查看Dependencies> Auth 2.0.0> Authentication>
Basic> BasicAuthenticatable.swift)。



 类似资料:
  • 问题内容: 我刚刚看到在对PHP对象的引用中使用了反斜杠,并且对此感到很好奇(我以前从未见过)。这是什么意思? 如果您感到好奇,请参见SendGrid的文档。 问题答案: 这是因为他们使用的是PHP名称空间。命名空间是PHP 5.3中的新增功能。

  • 问题内容: 我有以下查询 这将导致答案具有任何char + a + \ +值吗? 结果是像Pa \ pe一样有效吗? 是Ca%或_a%的有效答案? \在SQL查询中的正常表现如何? 问题答案: %是通配符,与LIKE子句中的零个或多个字符匹配。_是通配符,它​​完全匹配LIKE子句中的一个字符。 \是一个特殊字符,称为转义字符,它指示直接在其后的字符应按字面意义进行解释(对于单引号,通配符等有用)

  • 问题内容: 在PHP中做什么? 例如,CSRF4PHP有,和: 问题答案: (反斜杠)是PHP 5.3中的名称空间分隔符。 函数开头的A表示全局命名空间。 将其放在此处将确保所调用的函数来自全局名称空间,即使当前名称空间中存在具有相同名称的功能。

  • 问题内容: 我有一个字符串“ \\ u003c”,它属于UTF-8字符集。由于存在双反斜杠,因此我无法将其解码为unicode。如何从“ \\ u003c”获取“ \ u003c”?我正在使用Java。 我尝试过 但无法实现我想要的。 这是我的代码 文件的内容是 \ u003c 问题答案: 不知道您是否仍在寻找解决问题的方法(因为您已经接受了答案),但是我仍然会添加我的答案作为针对 所述问题 的可

  • 本文向大家介绍Python中的左斜杠、右斜杠(正斜杠和反斜杠),包括了Python中的左斜杠、右斜杠(正斜杠和反斜杠)的使用技巧和注意事项,需要的朋友参考一下 首先,"/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠一般来说对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠,但是现在Windows (一)目录中的斜杠们 python读文件需要输入的目录参数,列出以下

  • Markdown 可以利用反斜杠来插入一些在语法中有其它意义的符号,例如:如果你想要用星号加在文字旁边的方式来做出强调效果(但不用 <em> 标签),你可以在星号的前面加上反斜杠: \*literal asterisks\* Markdown 支持以下这些符号前面加上反斜杠来帮助插入普通的符号: \ 反斜线 ` 反引号 * 星号 _ 底线 {} 花括号 [] 方括号 () 括