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
- SWfit学习2:函数和闭包
- SWfit学习3:类和对象
- SWfit学习4:枚举和结构体
- swfit中文学习
- SWfit学习5:协议
- SWfit学习6:扩展
- Swift学习笔记-函数和闭包(2)
- Swift2.2 学习笔记(三) ___函数和闭包
- Swift学习函数和闭包
- Scala学习--函数和闭包
- Swift学习笔记 -- 函数和闭包
- go语言学习-函数和闭包
- Swift学习3--函数和闭包
- JavaScript学习-匿名函数和闭包
- Swfit 常量和变量
- Swfit初学4--函数问题
- Swfit初学2
- Swfit(2)
- JSLint简介
- hadoop一些常见的案例(更新中)
- 第2周项目0-宣告‘主权’
- 第2周 项目0 宣告“主权”
- Oozie配合Hive、Sqoop定时导出Hive表数据至RDB
- SWfit学习2:函数和闭包
- Dapper ORM 用法—Net下无敌的ORM(转)
- iOS网络基础第一篇
- Hibernate学习之一对多关联
- pythonanywhere搭建过程
- 第一周项目1-c/c++中参数传递方式
- 微信公众平台后台接入简明指南
- 知道创宇研发技能列表v3.0
- iOS开发利器-CocoaPods安装和使用教程