功能取决于以前的Swift

时间:2019-04-23 06:02:33

标签: swift

我有三个功能,每个功能都取决于前一个功能。

let dbPath = createDBPath()
let db =  openDatabase(dbPath!)
readQuestionsFromDB(db!)

第一行创建数据库路径(如果没有给出致命错误,因为如果我无权访问文件结构,那么继续执行就没有意义了)。 第二行使用路径打开数据库(在这里可以进行解包,好像我们没有路径,无论如何在这一点上都将崩溃)。 第三行从数据库中读取需要打开的测验问题,如果数据库有问题,它也会从函数内部崩溃,就像我们无法读取数据库一样,这是严重错误的。

构造此内容的最佳方法是什么?如果-让金字塔吗?我将其分为三个功能,以尝试将功能分开以提高可读性。也许我应该将db和db路径作为类属性传递?我不确定...

2 个答案:

答案 0 :(得分:2)

我会这样做

if let dbPath = createDBPath(),
   let db = openDatabase(dbPath) {
    readQuestionsFromDB(db)
}

答案 1 :(得分:0)

我看不到您当前的代码有什么问题,但是,如果您真的想更改代码的美感,可以在可选选项上调用map

createDBPath().map(openDatabase).map(readQuestionsFromDB)