我有三个功能,每个功能都取决于前一个功能。
let dbPath = createDBPath()
let db = openDatabase(dbPath!)
readQuestionsFromDB(db!)
第一行创建数据库路径(如果没有给出致命错误,因为如果我无权访问文件结构,那么继续执行就没有意义了)。 第二行使用路径打开数据库(在这里可以进行解包,好像我们没有路径,无论如何在这一点上都将崩溃)。 第三行从数据库中读取需要打开的测验问题,如果数据库有问题,它也会从函数内部崩溃,就像我们无法读取数据库一样,这是严重错误的。
构造此内容的最佳方法是什么?如果-让金字塔吗?我将其分为三个功能,以尝试将功能分开以提高可读性。也许我应该将db和db路径作为类属性传递?我不确定...
答案 0 :(得分:2)
我会这样做
if let dbPath = createDBPath(),
let db = openDatabase(dbPath) {
readQuestionsFromDB(db)
}
答案 1 :(得分:0)
我看不到您当前的代码有什么问题,但是,如果您真的想更改代码的美感,可以在可选选项上调用map
。
createDBPath().map(openDatabase).map(readQuestionsFromDB)