Swift 3 尝试默认值

标签 swift

我正在学习 Swift 并且正在测试以下代码

var value: String;
do {
  value = try getValue()
} catch {
  value = "Default Value"
}

可以缩短为

let value = (try? getValue()) ?? "Default Value"

它有效,但我觉得我可能缺少一个更明显的解决方案。

最佳答案

您的解决方案非常棒,而且非常优雅。

我想我们想避免在第一行说 var 并在稍后初始化变量。 一般,使用复杂初始化程序立即初始化值的方法是使用定义和调用结构:

let value: String = {
    do {
        return try getValue()
    } catch {
        return "Default Value"
    }
}()

如果 catch block 返回了您想捕获的 error 信息,您可能会想要这样做。

但是,在这种情况下,您忽略了错误的性质,您的表达式更加紧凑,并且完全按照您的意愿进行。 try? 将返回一个 Optional,如果我们成功,它将被解包,或者如果我们失败,将返回 nil 并导致替代值(“默认要使用的值")。

关于Swift 3 尝试默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42738755/

相关文章:

ios - 调试时 Xcode 变量查看空值

swift - 类型 'UICollectionView' 的值没有成员 'beginUpdates' - Swift 3 问题

ios - didReceiveLocalNotification 总是在应用程序启动时触发

swift - 使用带有 Swift2 的相机的黑色背景图像

Swift AVPlayer 到耳机

swift - 涂上 :only generating unit test results not the UI tests

ios - 我的 iPhone 应用程序无法在 Apple Silicon Mac 上使用

ios - 使用分段控制操作调用 subview Controller ?

swift - iPhone X 上的节点定位

ios - 按下返回按钮时在 UITextField 之间切换