Swift-06-闭包

  看完记不住,只好继续抄课文。

  

  如果某个存储型属性的默认值需要特别的定制或者准备,就可以使用闭包或者全局函数来为其属性提供定制的默认值。每当某个属性所属的新类型实例创建时,对应的闭包或者函数会被调用,而他们的返回值会当做默认值赋值给这个属性。

  这种类型的闭包或函数一般会创建一个跟属性类型相同的临时变量,然后修改它的值以满足预期的初始状态,最后将这个临时变量的值作为属性的默认值进行返回。

  公式如下:

class SomeClass {
    let someProperty: SomeType = {
    // 在这个闭包中给 someProperty 创建一个默认值 // someValue 必须和 SomeType     类型相同
    return someValue
    }()
}

  注意闭包结尾的大括号后面接了一对空的小括号。这是用来告诉Swift需要立刻执行此闭包。如果忽略了这对括号,相当于是将闭包本身作为值赋值给了属性,而不是将闭包的返回值赋值给属性。

  Attention:

  如果使用闭包来初始化属性的值,请记住在闭包执行时,示例的其他部分还没有初始化。这意味着不能够在闭包里反问其他的属性,就算这个属性有默认值也不允许。同样,不能使用隐式的self属性,或者调用其他的实例方法。

  

时间: 2024-10-10 14:37:34

Swift-06-闭包的相关文章

swift 深入理解Swift的闭包

我们可用swift的闭包来定义变量的值. 先来一个简单的例子大家先感受感受. 定义一个字符串的变量的方法: 直接赋值 var str="JobDeer" 还可以用闭包的方式定义: var str:String={ return "JobDeer" }() 闭包还可以这么定义,省略了等号和括号: var str:String{ return "JobDeer" } 闭包中可以定义get方法. var str:String{ get{ return

Swift:闭包

一.闭包的介绍 闭包表达式(Closure Expressions) 尾随闭包(Trailing Closures) 值捕获(Capturing Values) 闭包是引用类型(Closures Are Reference Types) 闭包是自包含的函数代码块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其他一些编程语言中的 lambdas 函数比较相似. 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 这就是所谓的

Swift使用闭包表达式

Swift中的闭包表达式很灵活,其标准语法格式如下:{ (参数列表) ->返回值类型 in    语句组}其中,参数列表与函数中的参数列表形式一样,返回值类型类似于函数中的返回值类型,但不同的是后面有in关键字.Swift提供了多种闭包简化写法,这一节我们将介绍几种不同的形式.1.类型推断简化类型推断是Swift的强项,Swift可以根据上下文环境推断出参数类型和返回值类型.以下代码是标准形式的闭包:{(a:Int, b:Int) -> Int in    return a + b}Swift

Swift学习--闭包的简单使用(三)

一.Swift中闭包的简单使用 override func viewDidLoad() { super.viewDidLoad() /** 闭包和OC中的Block非常相似 OC中的block类似于匿名函数 闭包是用来定义函数 作用:Block是用于保存一段点,在需要的时候执行 闭包也是用于保存一段点,在需要的时候执行做一个耗时操作 */ /** 闭包的基本格式: { (形参列表)->() in 需要执行的代码 } */ /** * 闭包的几种格式: 1.将闭包通过实参传递给函数 2.如果闭包是

Swift函数闭包

一.闭包的概念 计算机语言要支持闭包的前提条件有2个: 1.支持函数类型,能够将函数作为参数或返回值传递: 2.支持函数嵌套 示例: func caculate(opr : String)->(Int,Int)->Int { var result:(Int,Int)->Int switch(opr){ case "+": result={(a:Int,b:Int)->Int in return a+b } default: result = {(a:Int,b:

Swift:闭包(Closures)

一. 基本概念 闭包(Closures)是自包括的功能代码块,能够在代码中使用或者用来作为參数传值. 在Swift中的闭包与C.OC中的blocks和其他编程语言(如C#)中的lambda, javascript中的函数嵌套等类似. 闭包能够捕获和存储上下文中定义的的不论什么常量和变量的引用. 这就是所谓的变量和变量的自封闭, 因此闭包还会处理全部捕获的引用的内存管理. 全局函数和嵌套函数事实上就是特殊的闭包. 闭包的形式有: (1)全局函数都是闭包.有名字但不能捕获不论什么值. (2)嵌套函数

Swift的闭包(二):捕获值

闭包可以从定义它的上下文中捕获常量和变量. 在Swift中,捕获值最简单的例子是嵌套函数,举个例子: 1 func makeIncrementer(forIncrement amount: Int) -> () -> Int { 2 var runningTotal = 0 3 func incrementer() -> Int { 4 runningTotal += amount 5 return runningTotal 6 } 7 return incrementer 8 } 在这

4 .Swift函数|闭包

在编程中,我们常把能完成某一特定功能的一组代码,并且带有名字标记类型叫做函数,在C语言中,我们知道函数名就是一个指针,它指向了函数体内代码区的第一行代码的地址,在swift中也具有同样的功效. 在Swift中函数的表现形式如下: 1. func 函数名(参数名1:参数类型,参数名2,参数类型)->返回值类型 {函数的实现部分} func sayHello()->Void { print("hello world") } //有参数,有返回值, func sayHello2(

【Swift】闭包(Closures)

闭包表达式(Closure Expressions) 嵌套函数 是一个在较复杂函数中方便进行命名和定义自包含代码模块的方式.当然,有时候撰写小巧的没有完整定义和命名的类函数结构也是很有用处的,尤其是在您处理一些函数并需要将另外一些函数作为该函数的参数时. 闭包表达式是一种利用简洁语法构建内联闭包的方式. 闭包表达式提供了一些语法优化,使得撰写闭包变得简单明了. 下面闭包表达式的例子通过使用几次迭代展示了sort(_:)方法定义和语法优化的方式. 每一次迭代都用更简洁的方式描述了相同的功能. so

关于Swift的闭包(closure)以及其在可选(Optional)类型中的应用

对于新手(如笔者)来说,闭包是Swift语言特性中很难理解的一部分.其原因可能有一部分在于一些人把复杂的函数写得很简单,新手会看不懂.闭包可以理解为把函数当做一个变量来看待.既然是变量,那么就自然可以作为参数传递给其它的函数.也就是说,实际上是把一个函数传递给了另一个函数.本文将详解闭包以及其在Optional型中的应用. 我们知道Swift采用了一种非常安全的称之为Optional的类型.这个Optional类型只可能有两种状态,一种是“什么都没有”(nil),另一种是“有什么东西”,只有这两