什么?=运算符在Swift中做什么?

时间:2018-03-29 20:15:45

标签: swift operators

我刚刚遇到了一些看起来像这样的代码:

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

err 变量来自我在代码中看到的SwiftyXMLParser。我对?=(questionmark-equals)运算符的含义感到茫然。我找不到有关它的文档。它在做什么?

1 个答案:

答案 0 :(得分:2)

我不知道为什么这个问题会得到这个问题,但在快速语言中这是一个非常有趣的话题。

在其他编程语言中,它关闭了运算符重载,而在Swifty术语中,它被称为自定义运算符。 Swift有自己的标准运​​算符,但我们也可以添加额外的运算符。 Swift有4种类型的运算符,其中前3种可用于自定义运算符:

  • 中缀:在两个值之间使用,例如加法运算符(例如1 + 2)
  • 前缀:在值之前添加,例如负数运算符(例如-3)。
  • Postfix :在值之后添加,例如force-unwrap运算符(例如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

请检查Apple doc中的主题名称Advanced operator