ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

swift 闭包和枚举

2021-09-19 13:33:02  阅读:140  来源: 互联网

标签:闭包 case return 函数 捕获 枚举 print 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”

标签:闭包,case,return,函数,捕获,枚举,print,swift
来源: https://blog.csdn.net/qq_31319235/article/details/120379715

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有