func loadData() {
postKey = post["key"] // or something else, you'll need to fetch the data base key from the current dictionary
Database.database().reference().child("posts").child(postKey).observeSingleEvent(of: .value) { (snapshot) in
if let dict = snapshot.value as? [String: AnyObject] {
self.titeLabel.text = dict["title"] as? String
}
}
我正在尝试理解下面的haskell代码并提出以下问题:
在haskell代码中,冒泡将在第一行评估2次,用于初始冒泡,其他用于最后冒泡或仅评估一次。
bubblesort2 :: (Ord a, Show a) => [a] -> [a]
bubblesort2 [] = []
bubblesort2 [x] = [x]
bubblesort2 (x:y:rest) =
bubblesort2 (init bubbled) ++ [last bubbled]
where
(first,second) = if x > y then (y,x) else (x,y)
bubbled = first : bubblesort2(second:rest)
答案 0 :(得分:2)
bubbled
时, bubblesort2
只会被评估一次。
您的where
条款bubbled = first : bubblesort2(second:rest)
定义bubbled
并将其与thunk相关联。这个thunk是bubbled
的值的替身。
如果评估bubbled
(或init bubbled
)强制last bubbled
的值,则thunk将被强制值替换,可以重复使用(不重新评估) last bubbled
(或init bubbled
)。