Ios Swift数组语法

Ios Swift数组语法,ios,xcode,google-maps,swift,Ios,Xcode,Google Maps,Swift,每次我在这里问问题,都是因为我不知道该搜索什么,对此我感到非常抱歉 无论如何,我正在尝试使用Google Maps SDK创建一个应用程序,我在Ray Wenderlich的网站上学习了Ron Kliffer的一个非常好的教程。然而,我想定制它相当沉重,所以我试图阅读每一行并理解它的功能。现在我遇到了一个块,在那里我不理解语法 func fetchPlacesNearCoordinate(coordinate: CLLocationCoordinate2D, radius: Double, t

每次我在这里问问题,都是因为我不知道该搜索什么,对此我感到非常抱歉

无论如何,我正在尝试使用Google Maps SDK创建一个应用程序,我在Ray 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中使用了相同的数组(我猜)

{    places in
     for place: GooglePlace in places {
         // ...
     }
}
是个了结,将军是

如果已知闭包类型或可以从上下文推断闭包类型,则可以省略参数类型、返回类型(以及参数周围的括号):

因此,第一个
places
是(唯一)闭包参数,它是 在for-in语句中使用

请注意,由于闭包的类型为
([GooglePlace])->Void
places
参数的类型为
[GooglePlace]
和 for in循环中的显式类型注释不是必需的:

{    places in
     for place in places {
         // ...
     }
}

“For In”是有文档记录的:。是的,我熟悉For In,但对函数调用末尾的单个“places In”和未使用的完成“argument”(因为它是空的?)感到困惑。然后看看In中的“Closure Expression Syntax”。“places”是闭包参数,在
For place:googleplaces In places{}中使用
。非常感谢。这正是我要找的。有很多很好的博客帖子和资源可以解释闭包。Martin R向你指出了Apple doc,这是最好的,但这里还有一些:Martin,你把我宠坏了!再次非常感谢。那么,如果我认为这是使用闭包:闭包可以从定义它们的上下文中捕获并存储对任何常量和变量的引用。这称为对这些常量和变量的闭包,因此称为“闭包”.Swift为您处理捕获的所有内存管理。因为闭包本身包含对viewController中某些IBOutlet的引用。
{ param_1, ..., param_n in
    statements
}
{    places in
     for place in places {
         // ...
     }
}