是否有一种增加可选Int的漂亮方法?

时间:2015-11-19 13:05:44

标签: swift int increment optional

我想增加一个Int?
目前我写了这个:

return index != nil ? index!+1 : nil

有没有更漂亮的方法来写这个?

3 个答案:

答案 0 :(得分:8)

您可以使用可选链接调用advanced(by:)函数:

return index?.advancedBy(1)

注意:这适用于任何Int,而不仅仅是1

如果您发现自己在代码中多次执行此操作,则可以定义自己的+运算符,将Int添加到Int?

func +(i: Int?, j: Int) -> Int? {
    return i == nil ? i : i! + j
}

然后你可以这样做:

return index + 1

答案 1 :(得分:7)

为了完整起见,Optional有一个map()方法:

/// If `self == nil`, returns `nil`.  Otherwise, returns `f(self!)`.
@warn_unused_result
@rethrows public func map<U>(@noescape f: (Wrapped) throws -> U) rethrows -> U?

因此

index != nil ? index! + 1 : nil

相当于

index.map { $0 + 1 }

答案 2 :(得分:1)

您可以选择通过在问号上添加前缀来调用可选方法,这也适用于后缀运算符:

return index?++

更一般地说,你也可以写:

index? += 1; return index