我们看一下Swift语言参考,可以肯定的是,这种反斜杠点表示法的用法称为key-path- expression。
(到目前为止,该问题已得到充分回答。)
从发布的代码中可以看到,User类包含一个名为的属性email
。
请注意,假设您使用的是Xcode,如果将其替换return \.email
为return \
,则会出现compile-error"Expected expression path in Swift key path"
,因此这表明该反斜杠点表示法可能与称为关键路径的东西有关。
从关于key-path的文档中,我们看到我们也可以编写\User.email
(并且您可以在Xcode中尝试它,而没有编译器错误)。
因此,从语义上讲,要了解usernameKey
您正在查看的声明的含义,我们可能想了解aWritableKeyPath
是什么。简而言之,从文档中,我们看到a WritableKeyPath
是:“支持对结果值进行读写的键路径。”
因此,我们看到该usernameKey
声明接受一个WritableKeyPath
对象并返回一个String
is User.email
。
此外,很明显,User类需要此usernameKey
属性才能与PasswordAuthenticatable
协议兼容,该协议是在第一行中导入的import Authentication
(如果您愿意在此处进行探索,请查看Dependencies> Auth 2.0.0> Authentication> Basic> BasicAuthenticatable.swift)。