Функция, зависящая от предыдущего Swift

#swift

#быстрый

Вопрос:

У меня есть три функции, каждая из которых зависит от предыдущей.

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

Первая строка создает путь к базе данных (если нет, выдает неустранимую ошибку, так как нет смысла продолжать выполнение, если у меня нет доступа к структуре файла).
Вторая строка открывает базу данных, используя путь (здесь с развертыванием все в порядке, как будто у нас нет пути, к этому моменту мы в любом случае завершим работу).
Третья строка читает вопросы викторины из базы данных, которую необходимо открыть, если в базе данных есть проблема, она также выйдет из строя изнутри функции, как будто мы не можем прочитать базу данных, значит, что-то серьезно не так.

Каков наилучший способ структурировать это? Пирамида «если — пусть»? Я разделил это на три функции, чтобы попытаться выделить функциональность для удобства чтения. Возможно, мне следует передать db и db path в качестве свойств класса? Я не уверен…

Ответ №1:

Я бы сделал это

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

Ответ №2:

Я не вижу ничего плохого в вашем текущем коде, но если вы действительно хотите изменить эстетику своего кода, вы можете вызвать map опции.

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