使用 `(反引号)定义 Swift 变量名称

40

我在浏览Alamofire的源代码时发现在这个源文件中有一个使用了反引号的变量名。

open static let `default`: SessionManager = {
    let configuration = URLSessionConfiguration.default
    configuration.httpAdditionalHeaders = SessionManager.defaultHTTPHeaders

    return SessionManager(configuration: configuration)
}()

然而,在使用变量的地方并没有反引号。那么反引号的作用是什么?

删除反引号会导致错误:

关键字“default”不能在此处用作标识符

3个回答

60
根据Swift文档
为了使用保留字作为标识符,需要在其前后加上反引号(`)。例如,class不是有效的标识符,但`class`是有效的。反引号不被视为标识符的一部分;`x`x具有相同的含义。
在您的示例中,default是Swift保留关键字,因此需要使用反引号。

10

关于使用已正确声明的保留字标识符后,被接受的答案的示例附录。

反引号不被视为标识符的一部分;`x` 和 x 的含义相同。

这意味着在标识符声明后我们不必担心使用反引号(但是我们可以使用):

enum Foo {
    case `var`
    case `let`
    case `class`
    case `try`
}

/* "The backticks are not considered part of the identifier; 
    `x` and x have the same meaning"                          */
let foo = Foo.var
let bar = [Foo.let, .`class`, .try]
print(bar) // [Foo.let, Foo.class, Foo.try]

8

简单来说,使用反引号可以允许你在变量名等中使用保留字。

var var = "This will generate an error" 

var `var` = "This will not!"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接