Swift 学习笔记 - 闭包
2015-11-03 10:55
351 查看
Swift 中的闭包,是一个匿名函数,和OC中的block很像
先说一下闭包的声明的格式
var something = {(name : String) -> String in //关键字in之前的是参数列表以及返回值类型
//do something //关键字in之后是所做操作
return "name is \(name)"
}
something("Jeason") //调用闭包,传入正确的参数,返回闭包的return值。
下面给个简单的小例子,将闭包作为函数的参数
//定义4个闭包,都是传入两个Float类型的参数,返回Float类型的结果
var addition = {(number1 : Float,number2 : Float) -> Float in
return number1 + number2
}
var subtraction = {(number1 : Float, number2 : Float) -> Float in
return number1 - number2
}
var multiplication = {(number1 : Float, number2 : Float) -> Float in
return number1 * number2
}
var division = {(number1 : Float, number2 : Float) -> Float in
if number2 == 0 {
return -1
}
else {
return number1 / number2
}
}
//在这个函数中,第三个参数是一个闭包,返回值调用闭包进行四则运算。
func caculation (number1 : Float, number2 : Float ,operation : (Float , Float) -> Float) -> Float {
return operation(number1,number2)
}
调用这个函数,进行四则运算。第一个和第二个参数是操作数,第三个参数是闭包,传入之前的4个变量,就可执行对应的操作。
caculation(100, number2: 200, operation: addition)
caculation(100, number2: 200, operation: subtraction)
caculation(100, number2: 200, operation: multiplication)
caculation(100, number2: 200, operation: division)
从上面的小例子中可以看出,闭包的封装性更好,从函数中根本看不出具体的操作是什么。
先说一下闭包的声明的格式
var something = {(name : String) -> String in //关键字in之前的是参数列表以及返回值类型
//do something //关键字in之后是所做操作
return "name is \(name)"
}
something("Jeason") //调用闭包,传入正确的参数,返回闭包的return值。
下面给个简单的小例子,将闭包作为函数的参数
//定义4个闭包,都是传入两个Float类型的参数,返回Float类型的结果
var addition = {(number1 : Float,number2 : Float) -> Float in
return number1 + number2
}
var subtraction = {(number1 : Float, number2 : Float) -> Float in
return number1 - number2
}
var multiplication = {(number1 : Float, number2 : Float) -> Float in
return number1 * number2
}
var division = {(number1 : Float, number2 : Float) -> Float in
if number2 == 0 {
return -1
}
else {
return number1 / number2
}
}
//在这个函数中,第三个参数是一个闭包,返回值调用闭包进行四则运算。
func caculation (number1 : Float, number2 : Float ,operation : (Float , Float) -> Float) -> Float {
return operation(number1,number2)
}
调用这个函数,进行四则运算。第一个和第二个参数是操作数,第三个参数是闭包,传入之前的4个变量,就可执行对应的操作。
caculation(100, number2: 200, operation: addition)
caculation(100, number2: 200, operation: subtraction)
caculation(100, number2: 200, operation: multiplication)
caculation(100, number2: 200, operation: division)
从上面的小例子中可以看出,闭包的封装性更好,从函数中根本看不出具体的操作是什么。
相关文章推荐
- Apple Swift学习教程
- Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
- Swift中定义二维数组的方法及遍历方法示例
- 简单分析Swift语言的一些基本特征
- Swift与C语言指针结合使用实例
- Swift心得笔记之控制流
- 用Swift构建一个简单的iOS邮件应用的方法
- 苹果公司推出的新编程语言Swift简介和入门教程
- Swift中的指针操作和使用详细介绍
- Swift中使用正则表达式的一些方法
- Swift心得笔记之运算符
- Swift中使用可选类型完美解决占位问题
- Swift学习笔记之构造器重载
- Swift中的Access Control权限控制介绍
- Swift类型创建之自定义一个类型详解
- Swift教程之控制流详解
- Swift中初始化方法的顺序介绍
- Swift里的值类型与引用类型区别和使用
- Swift调用Objective-C编写的API实例