Swift学习3--函数和闭包
来源:互联网 发布:华为 网络管理 编辑:程序博客网 时间:2024/05/19 17:07
函数
1,函数的返回值可以是元组
2,函数的参数可以有默认值
3,输入输出参数 用&,可以进行地址传递
4,函数类型 可以类比函数指针,可以作为参数,也可以作为返回值:
func stepForward(input: Int) -> Int {
return input + 1
}
func stepBackward(input: Int) -> Int {
return input - 1
}
func chooseStepFunction(backwards: Bool) -> (Int) -> Int {
return backwards ? stepBackward : stepForward
}
let f = chooseStepFunction(backwards:false)
print(“(f(1))”)
5,嵌套函数–定义在其他函数内部的函数
闭包
闭包采取如下三种形式之一:
A.全局函数是一个有名字但不会捕获任何值的闭包
B.嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包
C.闭包表达式是一个利用轻量级语法所写的可以捕获其上下文中变量或常量值的没有名字的闭包
1,闭包表达式语法有如下一般形式:
{ (parameters) -> returnType in
statements
}
使用举例:
let names = [“Chris”, “Alex”, “Ewa”, “Barry”, “Daniella”]
func backwards(s1: String, s2: String) -> Bool {
return s1 > s2
}
var reversed = names.sorted(by: backwards)
print(reversed) // print: Ewa Daniella Chris Barry Alex
2,将闭包写在调用语句中:
var reversed = names.sorted(by: { (s1: String, s2: String) -> Bool in return s1 > s2 } )
3,根据上下文推断类型--因为排序闭包是作为函数的参数进行传入的,Swift可以推断其参数和返回值的类型
var reversed = names.sorted(by: { s1, s2 in return s1 > s2 })
4,可以隐藏掉return
var reversed = names.sorted(by: { s1, s2 in s1 > s2 } )
5,参数名简写--使用参数名简写,可以省略参数名的定义和in关键字
var reversed = names.sorted(by: {
6,运算符函数
var reversed = names.sorted(by: >)
Trailing 闭包
let digitNames = [
0: “Zero”, 1: “One”, 2: “Two”, 3: “Three”, 4: “Four”,
5: “Five”, 6: “Six”, 7: “Seven”, 8: “Eight”, 9: “Nine”
]
let numbers = [16, 58, 510]
let strings = numbers.map { (number) -> String in var number = number var output = "" repeat { output = digitNames[number % 10]! + output number /= 10 } while number > 0 return output } // strings is inferred to be of type [String] // its value is ["OneSix", "FiveEight", "FiveOneZero"]
待研究
捕获 && 闭包是引用类型
runningTotal和amount被捕获
func makeIncrementer(forIncrement amount: Int) -> () -> Int {
var runningTotal = 0
func incrementer() -> Int {
runningTotal += amount
print(“(runningTotal)”)
return runningTotal
}
return incrementer
}
let incrementByTen = makeIncrementer(forIncrement: 10)
incrementByTen() // 10
incrementByTen() // 20
- Swift学习3--函数和闭包
- Swift学习函数和闭包
- Swift学习笔记 -- 函数和闭包
- Swift2学习:Swift概览3-函数和闭包
- Swift -3 函数和闭包
- Swift语法基础:3 - Swift的函数和闭包
- swift 函数和闭包
- Swift函数和闭包
- Swift函数和闭包
- Swift 函数和闭包
- Swift学习笔记-函数和闭包(1)
- Swift学习笔记-函数和闭包(2)
- Swift学习之路 -- 函数和闭包
- iOS学习笔记42-Swift(二)函数和闭包
- swift学习日记(三) 函数 闭包
- Swift之函数和闭包
- 第三节 Swift 函数和闭包
- Swift入门篇-闭包和函数
- mongoengine连接数据库错误
- OkHttp3的使用记录(下)
- iOS使用自签名证书实现HTTPS请求
- 常用工具集合
- HTML5学习之一
- Swift学习3--函数和闭包
- unity 3d GUI.Toolbar以及GUI.Toggle
- SOA服务-WSDL概念模型
- IntelliJ Idea 常用快捷键列表
- Android 强引用,弱引用,软引用,虚引用
- 简单动画
- 38.jquery.page.js实现分页技巧
- 盐值
- 逆置一个数的二进制序列