我不理解== false
部分,语法看起来像一个闭包但我在Apple文档中找不到解释。
let photoInfos = (JSON.value!.valueForKey("photos") as! [NSDictionary]).filter({
($0["nsfw"] as! Bool) == false
}).map {
PhotoInfo(id: $0["id"] as! Int, url: $0["image_url"] as! String)
}
第一个封闭是封闭吗?
答案 0 :(得分:1)
是的{ ($0["nsfw"] as! Bool) == false }
是一个闭包,它将使用这个函数过滤字典(每个元素将扮演$ 0的角色),如果函数的计算结果为true,它将保留,如果不是,它将不会
以下是过滤器上文档的link。
以下是使用过滤器和地图的闭包的几个例子。
// this one will filter the array by testing each element to see if the uppercased value matches the value, if so it is kept
let anArray = [ "a", "A", "b", "c"]
let aNewArray = anArray.filter { $0.uppercaseString == $0 }
print(aNewArray) // prints the array ["A"]
// this one maps all the elements to their uppercase value
let allUpcase = anArray.map { $0.uppercaseString }
print(allUpcase) // "["A", "A", "B", "C"]