在下面的'parseB'函数中,flatMap使用括号而不是花括号的语法。
有一个扁平化地图的实现,看起来像这样:
struct Episode {
let id: String
let title: String
}
extension Episode {
init?(dictionary: [String: AnyObject]) {
guard let id = dictionary["id"] as? String, title = dictionary["title"] as? String else { return nil }
self.id = id
self.title = title
}
}
func parseA(dictionaries: [[String: AnyObject]]) -> [Episode] {
return dictionaries.flatMap { dic in Episode.init(dictionary: dic)}
}
func parseB(dictionaries: [[String: AnyObject]]) -> [Episode] {
return dictionaries.flatMap (Episode.init)
}
有一个扁平化地图的实现,看起来像这样:
public func flatMap<U>(@noescape f: (Wrapped) throws -> U!) rethrows -> U!
阅读这篇文章,我仍然不明白为什么在上面的例子中,Episodes上的init没有括号。
有时候Swift非常擅长推断出东西,让人很难理解正在发生的事情。请问有人能帮助我理解为什么Episodes的init方法没有使用括号吗?
...flatMap (Episode.init)
参考1:https://talk.objc.io/episodes/S01E01-networking 参考2:https://github.com/objcio/S01E01-networking
这些链接提供了关于网络编程的信息和示例代码。