在科特林我们有一个列表标准(范围)功能(例如let,apply,run等)
下面的用法示例
val str : String? = "123"
str?.let{ print(it) }
Run Code Online (Sandbox Code Playgroud)
这使代码看起来更加简洁,无需 if (str != null)
很快,我将其编码如下
let str: String? = "123"
if str != nil { print(str!) }
Run Code Online (Sandbox Code Playgroud)
我必须有if str != nil。let默认情况下是否有我可以使用的提供程序(无需自己编写)?
仅供参考,我是Swift的新手,但检查似乎找不到它。
如果您愿意,请扩展Optional的功能
extension Optional {
func `let`(do: (Wrapped)->()) {
guard let v = self else { return }
`do`(v)
}
}
var str: String? = "text"
str.let {
print( $0 ) // prints `text`
}
str = nil
str.let {
print( $0 ) // not executed if str == nil
}
Run Code Online (Sandbox Code Playgroud)
你可以使用Optional.map:
let str1 : String? = "123"
str1.map { print($0) }
Run Code Online (Sandbox Code Playgroud)
印刷123。
let str2 : String? = nil
str2.map { print($0) }
Run Code Online (Sandbox Code Playgroud)
不打印任何东西。
因此,如果可选值不是nil,它将被解包并用作闭包的参数map。如果没有,则不会调用闭包。
swift 中更惯用的方法是使用可选绑定:
var str: String? = "123"
if let s = str {
print(s)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
226 次 |
| 最近记录: |