【问题标题】:Best practice for accessing variables from a do-catch block [closed]从 do-catch 块访问变量的最佳实践 [关闭]
【发布时间】:2020-11-21 04:58:44
【问题描述】:

标准的 do-catch 块在 Swift 中如下所示:

let jsonEncoder = JSONEncoder()
do {
  let file = try jsonEncoder.encode(pets)
} catch {
  return
}
// want to access file here

我的问题是访问在 do-catch 块中创建的变量的最佳做法是什么?我的直觉说首先在块外创建变量作为未包装的可选(let file: Data!),但感觉不是很优雅。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: swift scope do-catch


    【解决方案1】:

    您可以在do-catch 块的范围之外简单地声明file,然后在do-catch 块之后访问它。这是有效的,因为你是从 catch 块返回的,所以如果没有初始化 file,你永远无法到达 print 语句 - 它要么从 do 块中获取值,要么函数从 @987654328 返回@ 块,在这种情况下,print 永远不会执行。

    let jsonEncoder = JSONEncoder()
    let file: Data
    do {
        file = try jsonEncoder.encode(pets)
    } catch {
        return
    }
    // Do whatever you need with file
    print(file)
    

    【讨论】:

    • guard + try? 将是一个替代方案。
    猜你喜欢
    • 2012-07-31
    • 2021-02-17
    • 2020-09-15
    • 2022-01-23
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    相关资源
    最近更新 更多