Swift 中的 ?= 运算符有什么作用?
What does the ?= operator do in Swift?
我刚看到一些代码,如下所示:
var msg:String = "";
msg ?= err["ErrorMessage"].text;
err 变量来自我在代码中看到的 SwiftyXMLParser。我不知道 ?=(问号等于)运算符的含义。我找不到关于它的文档。它在做什么?
这个问题在Swift语言中是一个很有趣的话题。
在其他编程语言中,它不允许运算符重载,而在 Swifty 术语中,它称为 自定义运算符。 Swift 有自己的标准运算符,但我们也可以添加其他运算符。 Swift 有 4 种运算符,其中前 3 种可用于自定义运算符:
- Infix:用于两个值之间,如加法运算符(例如 1 + 2)
- Prefix:添加在值之前,如否定运算符(例如-3)。
- Postfix:添加在一个值之后,如force-unwrap运算符(例如objectNil!)
- 三元:在三个值之间插入两个符号。
自定义运算符可以以 ASCII 字符 /、=、-、+、!、*、%、<、>、&、|、^、? 或 ~ 之一或 Unicode 字符之一开头.
新运算符使用 operator 关键字在全局级别声明,并标有前缀、中缀或后缀修饰符:
这是 playground 中的示例[Swift 4].
infix operator ?=
func ?= (base: inout String, with: String)
{
base = base + " " + with
}
var str = "Stack"
str ?= "Overflow"
print(str)
输出:
Stack Overflow
请检查苹果文档中的主题名称Advanced operator。
我刚看到一些代码,如下所示:
var msg:String = "";
msg ?= err["ErrorMessage"].text;
err 变量来自我在代码中看到的 SwiftyXMLParser。我不知道 ?=(问号等于)运算符的含义。我找不到关于它的文档。它在做什么?
这个问题在Swift语言中是一个很有趣的话题。
在其他编程语言中,它不允许运算符重载,而在 Swifty 术语中,它称为 自定义运算符。 Swift 有自己的标准运算符,但我们也可以添加其他运算符。 Swift 有 4 种运算符,其中前 3 种可用于自定义运算符:
- Infix:用于两个值之间,如加法运算符(例如 1 + 2)
- Prefix:添加在值之前,如否定运算符(例如-3)。
- Postfix:添加在一个值之后,如force-unwrap运算符(例如objectNil!)
- 三元:在三个值之间插入两个符号。
自定义运算符可以以 ASCII 字符 /、=、-、+、!、*、%、<、>、&、|、^、? 或 ~ 之一或 Unicode 字符之一开头.
新运算符使用 operator 关键字在全局级别声明,并标有前缀、中缀或后缀修饰符:
这是 playground 中的示例[Swift 4].
infix operator ?=
func ?= (base: inout String, with: String)
{
base = base + " " + with
}
var str = "Stack"
str ?= "Overflow"
print(str)
输出:
Stack Overflow
请检查苹果文档中的主题名称Advanced operator。