swift 闭包和枚举

//闭包
/*
    自包含函数代码块,可以在代码中传递和使用。
    
 闭包的形式:
    1、全局函数是一个有名字但不会捕获任何值的闭包
    2、嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包
    3、闭包表达式是一个利用轻量级语法所写的可以捕获其上下文中变量或者常量值的匿名闭包
 
    闭包的基本语法:
    {
        (参数列表) -> return type in
        闭包函数体
    }
 Swift 自动为内联闭包提供了参数名称缩写功能,你可以直接通过 $0,$1,$2 来顺序调用闭包的参数,以此类推。
 reversedNames = names.sorted(by: { $0 > $1 } )
 
 func someFunctionThatTakesAClosure(closure: () -> Void) {
     // 函数体部分
 }

 // 以下是不使用尾随闭包进行函数调用
 someFunctionThatTakesAClosure(closure: {
     // 闭包主体部分
 })

 // 以下是使用尾随闭包进行函数调用
 someFunctionThatTakesAClosure() {
     // 闭包主体部分
 }
 */
    
//
let names = ["qq","aa","dd","cc"]
var res = names.sorted { s1, s2 in
    return s1 > s2
}


/*
 Swift 中,可以捕获值的闭包的最简单形式是嵌套函数,也就是定义在其他函数的函数体内的函数。嵌套函数可以捕获其外部函数所有的参数以及定义的常量和变量。
 值捕获
 */
func makeIncrementer(forIncrement amount: Int) -> () -> Int {
    var runningTotal = 0
    func incrementer() -> Int {
        runningTotal += amount
        return runningTotal
    }
    return incrementer
}


var res1 = makeIncrementer(forIncrement: 12)
print(res1())
print(res1())


// 枚举
/*
 枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值。
 enum SomeEnumeration {
     // 枚举定义放在这里
 }
 */
enum CompassPoint {
    case north
    case south
    case east
    case west
}
var directionToHead = CompassPoint.west
directionToHead = .east
directionToHead = .south
switch directionToHead {
case .north:
    print("Lots of planets have a north")
case .south:
    print("Watch out for penguins")
case .east:
    print("Where the sun rises")
case .west:
    print("Where the skies are blue")
}
// 打印“Watch out for penguins”

猜你喜欢

转载自blog.csdn.net/qq_31319235/article/details/120379715