我刚刚遇到了一些看起来像这样的代码:
var msg:String = "";
msg ?= err["ErrorMessage"].text;
err变量来自SwiftyXMLParser,我在代码中可以看到。我对?=(问号等于)运算符的含义不知所措。我找不到有关它的文档。它在做什么?
这个问题在Swift语言中是一个非常有趣的话题。
在其他编程语言中,它不接受运算符重载,而在Swifty术语中,它称为Custom Operators。 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
请检查苹果文档中的主题名称Advanced operator。>