Mat*_*ler 11 int increment optional swift
我想增加一个Int?
目前我写的这个:
return index != nil ? index!+1 : nil
Run Code Online (Sandbox Code Playgroud)
有没有更漂亮的方式来写这个?
您可以advanced(by:)
使用可选链接调用该函数:
return index?.advancedBy(1)
Run Code Online (Sandbox Code Playgroud)
注意: 这适用于任何Int
,而不仅仅是1
.
如果您发现自己在代码中多次执行此+
操作,则可以定义自己的运算符,将运算符添加Int
到Int?
:
func +(i: Int?, j: Int) -> Int? {
return i == nil ? i : i! + j
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
return index + 1
Run Code Online (Sandbox Code Playgroud)
为了完整起见,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?
Run Code Online (Sandbox Code Playgroud)
因此
index != nil ? index! + 1 : nil
Run Code Online (Sandbox Code Playgroud)
相当于
index.map { $0 + 1 }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1047 次 |
最近记录: |