【问题标题】:Swift variable name with ` (backtick)带有 ` 的 Swift 变量名(反引号)
【发布时间】:2017-05-21 02:24:42
【问题描述】:

我在浏览 Alamofire 资源时发现了一个在 this source file 中转义的变量名

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

    return SessionManager(configuration: configuration)
}()

但是在使用变量的地方没有反引号。反引号的目的是什么?

删除反引号会导致错误:

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

【问题讨论】:

    标签: swift alamofire


    【解决方案1】:

    根据Swift documentation

    要使用保留字作为标识符,请在其前后放置一个反引号 (`)。例如,class 不是有效标识符,但 `class` 是有效的。反引号不被视为标识符的一部分; `x`x 含义相同。

    在您的示例中,default 是 Swift 保留关键字,这就是需要反引号的原因。

    【讨论】:

      【解决方案2】:

      简单地说,通过使用反引号,您可以使用 变量名等的保留字。

      var var = "This will generate an error" 
      
      var `var` = "This will not!"
      

      【讨论】:

        【解决方案3】:

        the accepted answer 的示例附录,关于在使用反引号正确声明后使用保留字标识符。

        反引号不被视为标识符的一部分; `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]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-26
          • 2021-08-01
          • 2014-07-30
          • 2018-04-30
          • 1970-01-01
          • 2022-01-20
          相关资源
          最近更新 更多