随笔 - 91,  文章 - 0,  评论 - 4,  阅读 - 13万

- 常量用 let ,变量用 var

- // Optional为可选项,// 可用类型值 + ? 代替

        let x: Optional = 10
        let y: Int? = 5
        print(x! + y!)

- 三木运算符

复制代码
        // 三目运算符
        x > 5 ? print("大了") : print("小了")
        // 可以这样写 `()`,如果不判断的话
        x > 5 ? print("大了") : ()
        /**
         ?? 是一个简单的 三目运算
         - 如果有值,使用值
         - 如果没有值,使用 ?? 后面的值替代
         ?? 优先级最低
        */
        print((x ?? 0) + (y ?? 0))
复制代码

- if let / var 连用语法,目的就是判断值

复制代码
        let oName:String? = ""
        let oAge:Int? = 10
        
        if oName != nil && oAge != nil {
            print(oName! + String(oAge!) + "")
        }
        
        // if let 连用,判断对象的值是否为 nil, {} 内一定有值,可以直接使用,不需要解包
        // if var 连用, {} 可以对值进行修改!
        if var name = oName,
            let age = oAge {
            name = ""
            
            // 进入分支之后, name 和 age 一定有值,不需要解包
            // name 和 age 的作用域仅在 {} 中
            print(name + String(age) + "")
        } else {
            print("name 或 age 为 nil")
        }
复制代码

 

- guard  守卫 / 守护  // guard let 和 if let 刚好相反

  这样可以使可选项去掉

复制代码
        let oName: String? = ""
        let oAge: Int? = 10
        
        // guard let 守护一定有值,如果没有直接返回
        guard let name = oName,
            let age = oAge else {
            print("年龄或者姓名为 nil")
                return
        }
        
        // 代码执行至此,name 和 age 一定有值
        // 通常判断是否有值之后,会做具体的逻辑实现,通常代码多
        // 如果用 if let 凭空多了一层分支,guard 是降低分支层次的方法
        // guard 的语法是 Swift 2.0 推出的!
        print(name + String(age) + "")    
复制代码

 

- swtich case
     1. swtich 可以针对任意类型的值进行分支,不再局限在整数
     2. switch 一般不需要break
     3. switch 如果要多值,使用 `,`
     4. 所有的分支至少需要一条指令,如果什么都不干,才使用break

复制代码
    func test9(num: String) {
        switch num {
        case "10", "9":
            print("")
        case "8":
            break
        default:
            print("一般")
        }
    }
复制代码

- for循环

1
2
3
4
5
6
7
8
9
10
11
// [0, 5)
for i in 0..<5 {
    print(i)
}
 
print("------")
 
// [0, 5]
for i in 0...5 {
    print(i)
}

 

posted on   xiao孛  阅读(1449)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示