我刚刚遇到了一些看起来像这样的代码:
var msg:String = "";
msg ?= err["ErrorMessage"].text;
err 变量来自我在代码中看到的SwiftyXMLParser。我对?=(questionmark-equals)运算符的含义感到茫然。我找不到有关它的文档。它在做什么?
答案 0 :(得分:2)
我不知道为什么这个问题会得到这个问题,但在快速语言中这是一个非常有趣的话题。
在其他编程语言中,它关闭了运算符重载,而在Swifty术语中,它被称为自定义运算符。 Swift有自己的标准运算符,但我们也可以添加额外的运算符。 Swift有4种类型的运算符,其中前3种可用于自定义运算符:
自定义运算符可以以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。