Есть ли более элегантный способ написать этот ленивый шаблон загрузки в Swift? - PullRequest
0 голосов
/ 09 февраля 2019

Я подумал о слиянии нулей, и если позволено, пока что нет ничего такого замечательного, есть идеи?

var habitResults: [[String:String]]? = resultsFilteredByHabit[habitId]

if habitResults != nil {
    // No action required
}
else {
    habitResults = results.filter({ $0["habitId"] == habitId })
    resultsFilteredByHabit[habitId] = habitResults
}

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Я думаю, это выглядит немного элегантнее:

resultsFilteredByHabit[habitId] = resultsFilteredByHabit[habitId] ?? results.filter({ $0["habitId"] == habitId })
0 голосов
/ 10 февраля 2019

Обычный синтаксис шаблона отложенной загрузки в Swift:

lazy var habitResults : [[String:String]] = {
    return results.filter{ $0["habitId"] == habitId }
}()

Закрытие выполняется один раз при первом обращении к переменной

...