swift 函数和闭包
来源:互联网 发布:网络营销策划ppt 编辑:程序博客网 时间:2024/05/07 10:55
函数和闭包
用 func 来声明一个函数。通过函数名加参数列表来调用函数。用-> 隔开参数列表和函数的返回类型。
func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)."}greet("Bob", "Tuesday")
试一试:
删除day这个参数。添加一个参数,表示今天的午餐。
用一个tuple(元组)使函数返回多个值。
func getGasPrices() -> (Double, Double, Double) { return (3.59, 3.69, 3.79)}getGasPrices()
函数也可以使用数量可变的参数,将这些参数放到一个数组中。
func sumOf(numbers: Int...) -> Int { var sum = 0 for number in numbers { sum += number } return sum}sumOf()sumOf(42, 597, 12)
试一试:
写一个函数计算它的参数的平均数。
函数可以嵌套,嵌套的函数可以访问外部函数中声明的变量。如果一个函数代码比较长或是比较复杂可以用嵌套函数来简化。
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()increment(7)
函数也可以作为另一个函数的参数。
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, 19, 7, 12]hasAnyMatches(numbers, lessThanTen)
函数实际上是一种特殊的闭包。用大括号{}来写一个匿名的闭包,在大括号中用 in 关键字将参数,返回类型从正文代码中区分开。
numbers.map({ (number: Int) -> Int in let result = 3 * number return result })
试一试:
重写上面的闭包,如果是奇数就返回 0。
还可以将闭包写的更简洁。当已知闭包的类型,例如,是一个代理回调函数,可以省略参数的类型和返回类型。单一语句的闭包会隐式的返回语句的值。
numbers.map({ number in 3 * number })
你可以通过参数的下标位置来引用这个参数而不是参数名——这个方法在简短的闭包中尤其有用。如果一个闭包作为函数的最后一个参数传递,那么这个闭包可以写在小括号的后面。
sort([1, 5, 3, 12, 2]) { $0 > $1 }
0 0
- swift 函数和闭包
- Swift函数和闭包
- Swift函数和闭包
- Swift 函数和闭包
- Swift之函数和闭包
- 第三节 Swift 函数和闭包
- Swift学习函数和闭包
- Swift入门篇-闭包和函数
- Swift小结函数和闭包
- Swift -3 函数和闭包
- Swift学习笔记 -- 函数和闭包
- Swift入门篇-闭包和函数
- swift里的函数和闭包
- Swift中的函数和闭包
- Swift学习3--函数和闭包
- Swift语法基础:3 - Swift的函数和闭包
- swift闭包函数
- Swift 函数,闭包使用
- Twitter Storm: 在生产集群上运行topology
- 一文读懂大数据:Hadoop,大数据技术、案例及相关应用
- ubuntu创建桌面快捷方式
- eclipse中Android模拟器,DDMS看不到设备
- .net中使用Sandcastle(类似java中的jdoc)生成代码帮助文档
- swift 函数和闭包
- Java面试复习纲领
- 快速生成带数据库、可编辑麻点的百度地图——需要下载的文件及说明
- 简明 Vim 练级攻略
- HTML锚点
- PHP程序员如何突破技术瓶颈
- 关于div设置背景颜色透明度
- DELPHI 7 学习笔记
- Python学习笔记-清除项目下SVN文件