深入理解Swift语言中的闭包机制

前端技术 2023/09/07 IOS

在 Swift 中的闭包类似于结构块,并可以在任何地方调用,它就像 C 和 Objective C 语言内置的函数。 函数内部定义的常数和变量引用可被捕获并存储在闭包。函数被视为封闭的特殊情况,它有 3 种形式。

在 Swift 语言闭合表达式,如下优化,重量轻语法风格,其中包括:

  • 推导参数并从上下文菜单返回值的类型
  • 从单封表达的隐性返回
  • 简略参数名称
  • 尾部闭包语法

语法
下面是一个通用的语法定义用于闭包,它接受参数并返回数据的类型:

复制代码 代码如下:
 
{(parameters) -> return type in
   statements
}
 
下面是一个简单的例子:
复制代码 代码如下:
 
let studname = { println(\"Welcome to Swift Closures\") }
studname()
 
当我们使用 playground 运行上面的程序,我们得到以下结果

Welcome to Swift Closures

以下闭包接受两个参数并返回一个布尔值:

复制代码 代码如下:
 
{(Int, Int) -> Bool in
   Statement1
   Statement 2
    ---
   Statement n
}
 
下面是一个简单的例子:
复制代码 代码如下:
 
let divide = {(val1: Int, val2: Int) -> Int in
   return val1 / val2
}
let result = divide(200, 20)
println (result)
 
当我们使用 playground 运行上面的程序,我们得到以下结果

10

在闭包中的表达式
以便捷的方式命名来定义代码块可以通过嵌套函数实现的。取而代之代表整个函数声明及名称构造用来表示函数。代表函数的语法清晰,简短声明是通过封闭的表达来实现的。

升序排列程序
排序字符串是 Swift 中保留的函数 “sorted”,这是在标准库中已提供实现。该函数将所述给定的字符串进行递增顺序排序并返回具有相同的尺寸,并在旧数组中相同数据类型的一个新的数组的元素。旧的数组保持不变。

两个参数的排序在函数内部表示:

已知类型的值表示为数组

数组的内容 (Int,Int) ,并返回一个布尔值(Bool),如果数组排序不好就会返回true,否则将返回false。

普通函数带输入字符串被写入,并传递给排序函数获得字符到新的数组,如下面所示:

复制代码 代码如下:
 
func ascend(s1: String, s2: String) -> Bool {
   return s1 > s2
}
let stringcmp = ascend(\"swift\", \"great\")
println (stringcmp)
 
当我们使用 playground 运行上面的程序,我们得到以下结果

复制代码 代码如下:

true

本文地址:https://www.stayed.cn/item/18878

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。