每当我在这里提出问题时,都是因为我不知道要搜索什么,对此我感到非常抱歉。
无论如何,我正在尝试使用Google Maps SDK创建应用程序,并且我遵循了Ron Kliffer在Ray Wenderlich网站上的非常不错的教程。但是,我想对它进行自定义,所以我试图阅读每一行并理解它的作用。现在,我遇到了一个不了解语法的块。
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数组,并且在其中使用了相同的数组(我想)。
最佳答案
{ 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 {
// ...
}
}