每当我在这里提出问题时,都是因为我不知道要搜索什么,对此我感到非常抱歉。

无论如何,我正在尝试使用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]) -> Voidplaces参数的类型为[GooglePlace]
for-in循环中不需要显式类型注释:
{    places in
     for place in places {
         // ...
     }
}

10-04 16:49