代码之家  ›  专栏  ›  技术社区  ›  David Rector

什么是?=操作员在Swift中做什么?

  •  3
  • David Rector  · 技术社区  · 6 年前

    我刚刚遇到了一些类似这样的代码:

    var msg:String = "";
    msg ?= err["ErrorMessage"].text;
    

    这个 犯错误 变量来自于我在代码中看到的SwiftyXMLParser。我搞不懂这个?=(问号等于)运算符。我找不到关于它的文档。它在做什么?

    1 回复  |  直到 6 年前
        1
  •  4
  •   halfer Vinayaka Karjigi    4 年前

    这个问题在Swift语言中是一个非常有趣的话题。

    在其他编程语言中,它不允许运算符重载,而在快速术语中,它被称为 自定义运算符 。Swift有自己的标准操作符,但我们也可以添加其他操作符。Swift有4种运算符,其中前3种可用于自定义运算符:

    • 中缀 :在两个值之间使用,如加法运算符(例如1+2)
    • 前缀 :在值之前添加,如负数运算符(例如,-3)。
    • 后缀 :在值之后添加,如强制展开操作符(例如objectNil!)
    • 三元:在三个值之间插入两个符号。

    自定义运算符可以以ASCII字符/,=,-,+,!,*,%之一开头<>&,|,^?,或~,或Unicode字符之一。

    使用operator关键字在全局级别声明新运算符,并用前缀、中缀或后缀修饰符标记:

    下面是操场上的一个示例[ Swift 4 ]。

     infix operator ?=
    
     func ?= (base: inout String, with: String)
      {
         base = base + " " + with
      }
    
      var str = "Stack"
      str ?= "Overflow"
      print(str)
    

    输出:

    Stack Overflow
    

    请检查主题名称 Advanced operator 在apple文档中。