自定义赋值运算符,可以安全地解包可选类型,并且如果右侧的可选类型没有值(即等于 nil
),则保持接收者(左侧的表达式)的现有值不变。
在以下情况下使用此运算符
nil
值时(否则运算符将不执行任何操作);nil
值时(否则运算符将不执行任何操作)。额外福利:右侧的值将在赋值前自动转换为接收者类型,因此无需显式转换。
假设您有一个属性需要始终有一个值,因此您以默认值开始
var title = 'Default value'
...然后您得到一个字典,可能包含 title
的新值
let aDict: [String: AnyObject] = ... // maybe got from network?
这是我们如何使用标准 Swift 语法尝试从字典中获取新的 title
值
if let newTitleValue = aDict["title"] as? String
{
// yes it has a non-nil value
title = newTitleValue
}
使用可选赋值运算符,您只需这样做即可完成同样的事情
title ?= aDict["title"]
有关更多示例,请参见单元测试。