6.4 Swift闭包表达式语法优化
来源:互联网 发布:电梯优化问题奇偶 编辑:程序博客网 时间:2024/06/07 06:36
/**
(2)闭包表达式的语法
fun funcName(参数) ->返回值类型 {
}
// 没有函数名,是个匿名函数,必须有参数类型 返回值类型;也就是有函数类型。
// 有个 in关键字,有执行语句
{ (参数) ->返回值类型 in
执行语句
}
*/
/**
通过swift语言的类型推断机制,闭包表达式
所谓的闭包表达式的优化,是对闭包表达式类型的优化。
在函数 bubbleSort2这里已经声明了闭包表达式的类型了,就可以省略
闭包表达式的参数类型,返回值类型;
也可以省略闭包表达式的参数,用 $0, $1 ...代替
*/
var array = [20,2, 3,70, 8]
// bubbleSort2 这里已经声明过了,闭包表达式的类型 (Int, Int) -> Int
// 可以作为实际参数直接放在这里
bubbleSort2(array: &array , cmp: {
// (a: Int, b: Int) -> Int in
// 可以直接不要类型,推断 a b的类型
// (a, b) -> Int in
// 还可以把闭包表达式的返回值省略不写,让编译器推断
(a, b) in
// 可以修改闭包表达式
let x = a %10
let y = b %10
if x > y {
return-1
} elseif x < y {
return1
} else {
return0
}
})
print("----------------->")
showArray(array: array)
// bubbleSort2 这里已经声明过了,闭包表达式的类型 (Int, Int) -> Int
bubbleSort2(array: &array , cmp: {
// (a: Int, b: Int) -> Int in
// 可以直接不要类型,推断 a b的类型
// (a, b) -> Int in
// 还可以把闭包表达式的返回值省略不写,让编译器推断
// (a, b) in
// 还可以把参数直接省略掉用 $0 $1 ...表示
let x = $0 %10
let y = $1 %10
if x > y {
return-1
} elseif x < y {
return1
} else {
return0
}
})
print("----------------->")
showArray(array: array)
func showArray(array: [Int]) ->Void {
for xin array {
print("\(x)")
}
}
// 写个冒泡排序,用闭包表达式作为回调
func bubbleSort2(array:inout [Int], cmp:(Int,Int) -> Int) {
let cnt = array.count
for (i, value)in array.enumerated()
{
if i >0
{
for (j, value2)in array.enumerated()
{
// print("j=====\(j)")
// print("====\(cnt - i)")
if j < cnt - i
{
if (cmp(array[j], array[j+1]) ==-1)
{
let t = array[j]
array[j] = array[j+1]
array[j+1] = t;
}
}
}
}
}
}
- 6.4 Swift闭包表达式语法优化
- Swift闭包表达式语法
- 6.2 Swift闭包表达式的语法
- Swift闭包表达式
- Swift闭包表达式
- Swift 闭包表达式
- Swift闭包表达式
- swift基础语法--闭包
- Swift语法14.闭包
- Swift使用闭包表达式
- swift 闭包 由浅入深 优化
- Swift基础语法: 23 - Swift的闭包简介, Sorted函数, 闭包的表达式语法, 根据上下文推断类型, 参数名简写, 运算符函数
- Swift weakSelf 在闭包语法
- Swift语法基础:3 - Swift的函数和闭包
- swift学习之三:闭包表达式
- Swift 闭包表达式-来自CocoaChina
- Swift 基础语法三--函数和闭包
- C# 委托,Lambda表达式 and Swift 委托,闭包
- php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
- CNN 中1X1卷积核的作用
- FMDB
- Eclipse中Android NDK 开发环境的搭建
- Hadoop浅学习&实践学习——初级2.1[真实分布集群]
- 6.4 Swift闭包表达式语法优化
- SpringBoot构建RESTful API——基础构建
- 6.0权限 乐视手机打不开权限
- cocos2d-x-3.12 打包android apk时 怎么修改已经配置好的setup.py参数 和解决 XX不是一个有效的 Android 目标平台 错误
- 安卓性能优化
- 6.5 Swift尾随闭包
- HeadFirstC笔记_8 静态库与动态库:热插拔代码
- 安卓基础DAY01 笔记
- 札记