SWfit学习2:函数和闭包

来源:互联网 发布:小型组态软件 编辑:程序博客网 时间:2024/05/16 04:39

函数

Swift 使用 func 关键字声明函数:

func greet(name: String, day: String) -> String {        return "Hello \(name), today is \(day)."        }greet("hello", day: "World")

通过元组(Tuple)返回多个值:

func getPrices() -> (Double,Double,Double){            return (3.89,4.98,0.87)    }getPrices()

支持带有变长参数的函数:

func sumOf(numbers:Int...) -> Int{        var sum = 0        for number in numbers{        sum += number        }        return sum    } let sum =  sumOf() let sum1 =  sumOf(12,23,45,14,45,87) println("sum =\(sum),sum1 = \(sum1)")

运行结果:sum =0,sum1 = 226

函数也可以嵌套函数:

 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 incernebt = makeincrementer()let summery = incernebt(7)
func hasAnyMatches(list:Int[],condition:Int -> Bool) -> Bool{        for item in list{        if condition(item){        return true         }        }        return false    }func lessonThanTen(number:Int) -> Bool{            return number < 10  }var numbers = [20,17,9,19]let haoMatch = hasAnyMatches(numbers, condition: lessonThanTen)

闭包
闭包是功能性自包含模块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其他一些编程语言中的 lambdas 比较相似。本质来说,函数是特殊的闭包,Swift 中可以利用{}声明匿名闭包:
闭包表达式语法有如下一般形式:
{ (parameters) -> returnType in
statements
}
函数和返回值类型都写在大括号内,而不是大括号外。

闭包的函数体部分由关键字 in 引入。 该关键字表示闭包的参数和返回值类型定义已经完成,闭包函数体即将开始。

 numbers.map({      (number: Int) -> Int in     let result = 3 * number     return result     })

当闭包的类型已知时,可以使用下面的简化写法:

    numbers.map({ number in 3 * number })

此外还可以通过参数的位置来使用参数,当函数最后一个参数是闭包时,可以使用下面的语法:

    sort([1, 5, 3, 12, 2]) { $0 > $1 }
0 0
原创粉丝点击