Swift逆向无凝聚运算符?

问题描述 投票:0回答:1

Swift有零凝聚运算符。a ?? b 简称 a != nil ? a : b. 斯威夫特是否有相反的操作符,一个速记为 a == nil ? a : b 或者换句话说。a == nil ? nil : b?

我会用它来将一个可选的值映射到其他东西上,就像这样。

let x = dict["key"] != nil ? mapValue(dict["key"]) : nil
// ideally: let x = dict["key"] ¿¿ mapValue(dict["key"])
swift
1个回答
5
投票

dict["key"] 返回一个可选的值,如果它存在,你想把它映射到另一个值,或者得到 nil 不然的话。这正是 Optional.map() 是为。

评价给定的结尾,当这个 Optional 实例不是 nil,将未封装的值作为参数传递。

在你的例子中。

let x = dict["key"].map { mapValue($0) }

或者干脆

let x = dict["key"].map(mapValue)

这也比

let x = dict["key"] != nil ? mapValue(dict["key"]) : nil
// or the hypothetical
let x = dict["key"] ¿¿ mapValue(dict["key"])

dict["key"] 只评估一次,而不是两次。

© www.soinside.com 2019 - 2024. All rights reserved.