是否有等效于算术运算符的可选链接?

Is there an equivalent to optional chaining with arithmetic operators?

我添加了两个可选号码。现在看起来像这样:

if let a = optionalA {
    if let b = optionalB {
        return a + b
    }
}
return nil

对于方法,有更方便的可选链接语法,如 optionalA.?method 语法。如果任一侧是 nil?

,算术运算符是否有等价的 return nil

可以创建一个运算符 +?,就像这样:

infix func +?(a: Int?, b: Int?) -> Int? {
    if aa = a {
        if bb = b {
            return aa + bb
        }
    }
    return nil
}

但我想知道是否有另一种内置方法可以做到这一点。

我认为没有内置的方式。但是你可以制作自己的运算符函数:

func +(lhs: Int?, rhs: Int?) -> Int? {
    if let a = lhs {
        if let b = rhs {
            return a + b
        }
    }

    return nil
}

var a: Int? = 1
var b: Int? = 2

var c = a + b

这是为 Swift 3 更新的自定义运算符方法:

infix operator +?
func +?(a: Int?, b: Int?) -> Int? {
    if let aa = a, let bb = b {
        return aa + bb
    }
    return nil
}