美文网首页
函数闭包--swift3 learnning notes

函数闭包--swift3 learnning notes

作者: ryanzl | 来源:发表于2016-09-26 15:47 被阅读0次

//函数实际是一种特殊的闭包,它是一段能之后被调取的代码

//--函数可以带有可变个数的参数,这些参数在函数内表现为数组的形式:

func sumOf(numbers: Int...) -> Int {
    var sum = 0
    for num in numbers {
        sum += num
    }
    return sum
}
sumOf()
sumOf(numbers: 1,2,3)

//--函数可以嵌套

func returnFifteen() -> Int {
    var y = 10
    func add() {
        
        y += 5
    }
    
    add()
    return y
}
returnFifteen()

//--函数是第一等类型,这意味着函数可以作为另一个函数的返回值。

func makeIncrementer() -> ((Int) -> Int) {
    func addOne(number: Int) -> Int {
        return 1 + number
    }
    
    return addOne
}
var increment = makeIncrementer()//调用 makeIncrementer 函数, 返回 (Int) -> Int 类型的函数
increment(7)
increment(1)

//--函数也可以当做参数传入另一个函数。

func hasAnyMatches(list: [Int],condition: (Int) -> Bool) -> Bool {
    for item in list {
        if condition(item) {
            return true
        }
    }
    return false
}
func lessThanTen(number: Int) -> Bool {
    return number < 10
}
var numbers = [20,1,23,7]
hasAnyMatches(list: numbers, condition: lessThanTen)

//--使用{}来创建一个匿名闭包,使用in将参数和返回值类型声明与闭包函数体进行分离。

numbers.map({
    (number: Int) -> Int in
    let ret = 1 + number
    return ret
})

//--简写闭包,忽略参数的类型和返回值。单个语句闭包会把它语句的值当做结果返回。

let mapNums = numbers.map({
    num in num + 2
})
print(mapNums)

//--通过参数位置而不是参数名字来引用参数

let sortedNums = numbers.sorted { (num1, num2) -> Bool in
    num1 > num2
}
let sortedShortNums = numbers.sorted(by: {$0 > $1})

print(sortedNums)
print(sortedShortNums)

//--函数类型 (Function Types)
每个函数都有种特定的函数类型,函数的类型由函数的参数类型和返回类型组成。例如:

(Int, Int) -> Int  :两个Int参数,Int返回值
() -> Void   :无参数,无返回值

源码:https://github.com/ryanzl/SwiftLearnningPratice

相关文章

  • 函数闭包--swift3 learnning notes

    //函数实际是一种特殊的闭包,它是一段能之后被调取的代码 //--函数可以带有可变个数的参数,这些参数在函数内表现...

  • Swift3:@escaping

    @escaping 在Swift3中,闭包默认是非逃逸的。在Swift3之前,事情是完全相反的:那时候逃逸闭包是默...

  • Swift3:@escaping

    @escaping 在Swift3中,闭包默认是非逃逸的。在Swift3之前,事情是完全相反的:那时候逃逸闭包是默...

  • 如何理解闭包?

    1、定义: 嵌套在函数作用域中的函数,称为闭包函数。该作用域称为闭包环境。通过闭包函数可以访问闭包函数所在函数作用...

  • 关于逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包当函数执行过程中,执行的函数内部的闭包,...

  • 3.逃逸闭包,非逃逸闭包

    逃逸闭包:当函数执行结束后,才去调用函数内部的闭包,叫做逃逸闭包非逃逸闭包:当函数执行过程中,执行的函数内部的闭包...

  • (9) python之闭包

    闭包闭包 = 函数 + 环境变量(函数定义的时候) 一个最简单的闭包 闭包不受外部变量影响 非闭包 闭包 闭包 只...

  • day14-函数(3)装饰器

    一、闭包函数 闭包函数=函数嵌套定义+函数对象+名称空间与作用域 闭包函数 1、闭:指的是该函数是定义在一个函数内...

  • 面试题(day-2)

    1 ,什么是闭包?闭包有什么好处?使用闭包要注意什么? 闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,...

  • JS的闭包

    1.闭包的概念 闭包函数:声明在一个函数中的函数,叫做闭包函数。闭包:内部函数总是可以访问其所在的外部函数中声明的...

网友评论

      本文标题:函数闭包--swift3 learnning notes

      本文链接:https://www.haomeiwen.com/subject/casqyttx.html