Swift数组语法

时间:2015-04-03 15:45:36

标签: ios xcode google-maps swift

每次我在这里问一个问题,因为我不知道该搜索什么,我很抱歉。

无论如何,我试图使用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中使用了相同的数组(我猜)。

1 个答案:

答案 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]) -> Voidplaces参数的类型为[GooglePlace]和 for-in循环中的显式类型注释不是必需的:

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