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

问题描述 投票:2回答:1

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

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

err变量来自SwiftyXMLParser,我在代码中可以看到。我对?=(问号等于)运算符的含义不知所措。我找不到有关它的文档。它在做什么?

swift operators
1个回答
4
投票

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

在其他编程语言中,它不接受运算符重载,而在Swifty术语中,它称为Custom Operators。 Swift有自己的标准运​​算符,但我们也可以添加其他运算符。 Swift有4种运算符,其中前3种可用于自定义运算符:

  • Infix:在两个值之间使用,例如加法运算符(例如1 + 2)
  • Prefix:在值之前添加,例如负运算符(例如-3)。
  • Postfix:在值之后添加,例如强制展开运算符(例如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。>
© www.soinside.com 2019 - 2024. All rights reserved.