有没有一种更优雅的方法可以在Swift中编写这种惰性加载模式?

时间:2019-02-09 20:56:16

标签: swift lazy-loading

我已经考虑过空合并,如果允许的话,到目前为止还没有什么好主意的?

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

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

2 个答案:

答案 0 :(得分:4)

Swift中通常的延迟加载模式语法是

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

第一次访问变量时,一次执行关闭操作

答案 1 :(得分:1)

我认为这看起来更优雅:

addEventListener('mouseover', hovercolor, false)