为什么类似可选链接的东西不适用于swift中的所有表达式和函数调用?

时间:2016-02-04 13:00:46

标签: swift

如果有像a?.b这样的swift中可选链接的能力,它返回b类型的可选项,那么为什么没有能力打开像这样的选项:

let x: Int? = 5, y: Int? = 6
let z: Int?
z = x? + y? 

我的意思是:如果所有参数都有值,则应用+(或任何其他函数),或者返回' nil'除此以外。它对我来说看起来非常有用,所以我不确定,如果我不缺少理解这一点的东西。

2 个答案:

答案 0 :(得分:1)

why并不是真正的回答,而是基于意见 - 尽管Swift团队没有在Swift领域实现隐式内容,这是一个很好的理由。

但您可以轻松为可选的Ints定义新的+运算符:

func +(lhs: Int?, rhs: Int?) -> Int? {
    if let l = lhs, r = rhs {
        return l + r
    }
    return nil
}

let x: Int? = 5, y: Int? = 6
let z = x + y

答案 1 :(得分:0)

你也可以使用flatmap删除选项,并减少为这样的总和,

cassandra.yaml