美文网首页
多个 Optional 解包时更优美的写法

多个 Optional 解包时更优美的写法

作者: 孤独逍遥人 | 来源:发表于2020-07-07 17:02 被阅读0次

我们在开发过程,经常会遇到,有多个 Optional 需要解包,并且在解包后进行逻辑处理,比如下方的示例:

func test(a: Int?, b: Int?) {
    
    if let a = a, let b = b {
        // 逻辑 A
    } else if let a = a {
        // 逻辑 B
    } else if let b = b {
        // 逻辑 C
    } else {
        // 逻辑 D
    }
    
}

为了防止强制解包的存在,我们可能需要些很多个 if let 来进行解包,使得我们的代码在一定程度上不够优美。

那么,我们是不是可以利用 swift 中,Optional 本身是个 enum 的特性,来对上述代码进行优化呢?

答案是可以的。我们可以这么写:

func test(A: Int?, B: Int?) {
    
    switch (A, B) {
    case (.some(let a), .some(let b)):
        // 逻辑 A
    case (.some(let a), .none):
        // 逻辑 B
    case (.none, .some(let b)):
        // 逻辑 C
    case (.none, .none):
        // 逻辑 D
    }
    
}

这样,我们在对多个 Optional 进行解包时,就无需写很多 if let 了,可以使用 switch 来代替。

相关文章

网友评论

      本文标题:多个 Optional 解包时更优美的写法

      本文链接:https://www.haomeiwen.com/subject/bkczqktx.html