每次我在这里问一个问题,因为我不知道该搜索什么,我很抱歉。
无论如何,我试图使用Google Maps SDK创建一个应用程序,我在Ron Wenderlich的网站上看了Ron Kliffer的一个非常好的教程。但是,我想要将它定制得相当重,所以我试着阅读每一行并理解它的作用。现在我遇到了一个块,我不懂语法。
func fetchPlacesNearCoordinate(coordinate: CLLocationCoordinate2D, radius:
Double, types:[String], completion: (([GooglePlace]) -> Void)) -> ()
这就是被调用的功能,这样:
dataProvider.fetchPlacesNearCoordinate(coordinate, radius:mapRadius, types: searchedTypes) { places in
for place: GooglePlace in places {
我根本不理解完成情况:位,"位于"位。接下来的是,如果我没有错,那就是" foreach"事物(或者用于Swift语法。
编辑:重新格式化
Edit2:是的,在函数体中创建了一个GooglePlaces数组,并且在forin-thing中使用了相同的数组(我猜)。
答案 0 :(得分:3)
{ places in
for place: GooglePlace in places {
// ...
}
}
是一个闭包。一般closure expression syntax是
{ (param_1 : type_1, ..., param_n : type_n ) -> return_type in
statements
}
当闭包类型已知或可以从上下文中推断出来时,您可以省略参数类型,返回类型(以及参数周围的括号):
{ param_1, ..., param_n in
statements
}
所以第一个places
是(唯一的)闭包参数,它是
用于for-in语句。
请注意,由于闭包的类型为([GooglePlace]) -> Void
,
places
参数的类型为[GooglePlace]
和
for-in循环中的显式类型注释不是必需的:
{ places in
for place in places {
// ...
}
}