我刚刚遇到一些代码,如下所示:
var msg:String = "";
msg ?= err["ErrorMessage"].text;
Run Code Online (Sandbox Code Playgroud)
从我在代码中看到的,err变量来自 SwiftyXMLParser。我对 ?= (问号等于)运算符的含义感到困惑。我找不到有关它的文档。它在做什么?
这个问题是 Swift 语言中一个相当有趣的话题。
在其他编程语言中,它对运算符重载关闭,而在 Swifty 术语中,它称为自定义运算符。Swift 有自己的标准运算符,但我们也可以添加其他运算符。Swift 有 4 种类型的运算符,其中前 3 种可与自定义运算符一起使用:
自定义运算符可以以 ASCII 字符 /、=、-、+、!、*、%、<、>、&、|、^、? 或 ~ 之一或 Unicode 字符之一开头。
新运算符使用operator关键字在全局级别声明,并用前缀、中缀或后缀修饰符进行标记:
这是 Playground[ Swift 4 ]中的一个示例。
infix operator ?=
func ?= (base: inout String, with: String)
{
base = base + " " + with
}
var str = "Stack"
str ?= "Overflow"
print(str)
Run Code Online (Sandbox Code Playgroud)
输出:
Stack Overflow
Run Code Online (Sandbox Code Playgroud)
请检查苹果文档中的主题名称高级运算符。
| 归档时间: |
|
| 查看次数: |
2659 次 |
| 最近记录: |