zoukankan      html  css  js  c++  java
  • Swift 常量、变量、条件判断

    - 常量用 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循环

            // [0, 5)
            for i in 0..<5 {
                print(i)
            }
            
            print("------")
            
            // [0, 5]
            for i in 0...5 {
                print(i)
            }
    
  • 相关阅读:
    目标检测之YOLOv3
    残差网络(ResNet)
    FPN详解
    YOLOv2/YOLO 9000深入理解
    批归一化(BN)
    全卷积网络FCN
    基于深度学习的目标检测算法综述
    目标检测两个基础部分——backbone and detection head
    YOLOv1 深入理解
    内置模块
  • 原文地址:https://www.cnblogs.com/shen5214444887/p/7403910.html
Copyright © 2011-2022 走看看