/**
嵌套函数
实际上呢,嵌套函数应该放在上一张来讲啦,这里我们放在闭包这里来讲
为了讲解在闭包中的捕获上下文的值
闭包捕获上下文的值,实际上就是嵌套函数
*/
var array = [20,2,3,70,8]
bubbleSortFunc(array: &array)
print("----------------->")
showArray(array: array)
func showArray(array: [Int]) -> Void {
for x in array {
print("\(x)")
}
}
// 函数是全局的
func swapValue(a: inout Int,b: inout Int) {
let t = a
a = b
b = t
}
// 写个冒泡排序, 用闭包表达式作为回调
func bubbleSortFunc(array:inout [Int]) {
let cnt = array.count
// 函数是局部的,作用域只在这个内部使用,仅仅为这个函数服务
func swapValue2(a: inout Int,b: inout Int) {
// 我们可以访问这个函数的局部变量,这个就是值捕获
print("数组的个数\(cnt)")
let t = a
a = b
b = t
}
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 array[j] > array[j+1]
{
// 换成用函数
// swapValue(a: &array[j],b: &array[j+1])
swapValue2(a: &array[j],b: &array[j+1])
// let t = array[j]
// array[j] = array[j+1]
// array[j+1] = t
}
}
}
}
}
}