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

时间:2015-01-09 14:33:36

标签: swift optional

我添加了两个可选数字。现在它看起来像这样:

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

对于方法,有更方便的可选链接语法,如optionalA.?method语法。如果任何一方都是nil,那么算术运算符是否会返回nil

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

我不认为有内置方式。但是你可以创建自己的运算符函数:

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

答案 2 :(得分:0)

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

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