Swift:语法说明-圆括号然后为“中”

叶夫根尼·克莱班(Evgeniy Kleban)

我跟随本教程,并与以下代码混淆:

 let rectToDisplay  = self.treasures.reduce(MKMapRectNull){

            (mapRect: MKMapRect, treasure: Treasure) -> MKMapRect in

            let treasurePointRect =
                MKMapRect (origin: treasure.location.mapPoint, size: MKMapSize (width: 0, height: 0))

            return MKMapRectUnion(mapRect, treasurePointRect)
        }

实际上,我不仅理解这一行:

    (mapRect: MKMapRect, treasure: Treasure) -> MKMapRect in

那是某种功能还是某种东西?输出是什么?我不太了解这种结构的含义(struct: struct, someClass: someClass) -> Struct in

那是什么逻辑?in是什么意思?

如果您想知道,treasure是包含坐标属性(纬度,经度等)的自定义类。

我了解该代码段的“整体”含义,但是该行的语法使我有些困惑。

您能提供一个解释吗?非常感谢!

空速

在Swift中,有两种方法来声明函数:带func和带闭包表达式:

// this is a function that takes an Int and returns a String
func f(i: Int) -> String { return i.description }
f(1) // returns "1"

// this is also a function that takes an Int and returns a String
let g = { (i: Int) -> String in return i.description }
g(1) // returns "1"

后者是闭包表达式–内联定义新函数的快速方法。它们最常与带有函数的函数一起使用(例如map,带有数组的函数和转换该数组的元素并在创建另一个数组的每个元素上运行该函数的函数)。

闭包表达式的语法是,它们在花括号内以参数和返回类型开头,然后是in,然后是函数体。与with不同func,它以func关键字开头,然后是参数和返回类型,然后是大括号内的函数体。

您并不总是看到,in因为可以忽略它。有许多速记可以让您完全跳过参数并返回类型(和return关键字)。但是有时您需要给他们,然后您需要in关键字。

您可以在Apple Swift书中阅读有关闭包表达式的更多信息您可以在此处阅读有关函数和闭包基础的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

语法说明:Swift中的方括号

来自分类Dev

JavaScript中的圆括号()位置-语法不寻常?

来自分类Dev

类型和空括号的分配。语法说明

来自分类Dev

“圆括号”语法的含义是什么?

来自分类Dev

条件构造语法问题-方括号或圆括号

来自分类Dev

列表中的差异-Python-语法说明

来自分类Dev

JavaScript中的GUID / UUID函数的语法说明

来自分类Dev

bashrc中变量的基本语法说明

来自分类Dev

圆括号中的树

来自分类Dev

使用圆括号的 Ruby 方法调用抛出语法错误

来自分类Dev

带有紧凑映射的Swift语法说明

来自分类Dev

Swift记忆调用语法说明

来自分类Dev

Swift中的Block语法

来自分类Dev

Swift中的数组语法

来自分类Dev

Swift中的数组语法

来自分类Dev

Swift 中的(类型)语法

来自分类Dev

类型说明符语法中的相互左递归

来自分类Dev

R中括号(圆括号)的功能

来自分类Dev

需要在Swift中对AnyObject进行说明

来自分类Dev

圆括号

来自分类Dev

使用尖括号的Swift数组语法

来自分类Dev

使用尖括号的Swift数组语法

来自分类Dev

语法说明(点语法)

来自分类Dev

Swift中的完成块语法

来自分类Dev

脚本标记中的圆括号是什么?

来自分类Dev

在data.table中的圆括号前面

来自分类Dev

脚本标签中的圆括号是什么?

来自分类Dev

圆括号中的Javascript字符串

来自分类Dev

Java中的try catch中的圆括号/括号()是什么