问题描述
Register
是否有一种更干净的方法来获得部分非可选的类型?没有力解开...
当我们过滤掉nil时,对于编译器来说很明显,我们将得到非可选的东西。就像我们应用compactMap的情况一样。
解决方法
这是一种无需强制解包的方法,仍然可以轻松读取:
let result = elements.compactMap { $0 as? (Int,Int?) }
打印出result
可以正常工作:
[(1,Optional(2)),(2,Optional(1)),(3,nil),(5,Optional(6)),(6,Optional(5))]
,
我能想到的唯一没有强制解包(!
)的方法是:
let result = elements.compactMap { (x,y) in x.map { ($0,y) } }
但这会牺牲可读性。老实说,我只是保持力量展开。这不是“绝对邪恶”的事情。有时您需要它。