【问题标题】:Practical application of backticks in SwiftSwift 中反引号的实际应用
【发布时间】:2016-07-22 18:52:32
【问题描述】:

来自this document

要使用保留字作为标识符,请在其前后放置一个反引号 (`)。

我很好奇它的实际应用。你什么时候真正想命名`class``self`等?

或者,相关地,为什么 Swift 的设计者允许这样做,而不是仅仅禁止我们使用保留字作为标识符?

【问题讨论】:

  • swift的设计者是每个人。它是开源的,深受社区的影响。所以必须有足够的证据来支持有人想要这样做的可能性。
  • 这个特性对我来说非常有用,因为它可以从不是为该用途设计的数据中自动生成 Swift 代码。例如,创建一个对应于 XML 元素的结构,该元素恰好具有名为“extension”的属性:struct Filename { var ˋextensionˋ = "txt" }。处理这个问题的标准方法比必须定义我自己的非故障方案更好,例如使用“_extension”。

标签: ios swift identifier reserved-words backticks


【解决方案1】:

最重要的用法是与具有不同关键字的其他语言的交互。

您可以在 Swift 中调用 C 和 Obj-C 函数。

现在,假设您需要调用一个名为guard 的C 函数。但是,这是 Swift 中的关键字,因此您必须告诉编译器您不想将其用作关键字而是用作标识符,例如:

`guard`()

Swift 中有多个关键字被广泛用作方法/函数名称,例如getset。在许多情况下,Swift 能够找出差异,但并非总是如此。

【讨论】:

    【解决方案2】:

    在某些情况下,使用guard 为我们提供了很好的示例。在这种情况下,如果不再存在,我需要检查自变量生命周期(当前控制器已解除分配)我不想执行其余代码。

     guard let `self` = self else {
            return
     }
    

    【讨论】:

    • 我认为比你的答案更干净的方法是:guard let _ = self else { return }
    • 对了,官方已经说这个backtics的应用是个bug。
    • 自 Swift 4 起不再需要这种情况下的反引号。
    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 2017-05-21
    • 2021-08-07
    • 2020-12-15
    • 1970-01-01
    • 2021-01-29
    • 2020-04-04
    相关资源
    最近更新 更多