美文网首页
笔记02 swift 流程控制

笔记02 swift 流程控制

作者: PPFSaber | 来源:发表于2021-04-23 16:13 被阅读0次
    //        switch必须要保证能处理所有情况  case、default后面至少要有一条语句 如果不想做任何事,加个break即可,fallthrough是贯穿当前判断
            
            var num = 1
            num = Int(arc4random())
            switch num {
            case 1:
                print("1")
            case 2:
                print("2")
            case 3:
                break
            case 4:
                print("4")
            case 5:
                print("5")
                fallthrough
            case 6:
                print("5 or 6")
                
            default:
                print("other \(num)")
            }
            
            //如果能保证已处理所有情况,也可以不必使用default
            enum Answer { case right, wrong }
            
            let answer = Answer.right
            switch answer {
            case Answer.right:
                print("right")
            case Answer.wrong:
                print("wrong")
            }
            
             // 由于已确定answer是Ansewer类型,因此可以省略Answer
            switch answer {
            case .right:
                print("right")
            case .wrong:
                print("wrong")
            }
            
            //复合条件
           // switch也支持Character、String类型
            let string = "Jack"
            
            switch string {
                case "Jack":
                    fallthrough
                case "Rose":
                    print("Right person")
                default:
                break
            } // Right person
            
            let character: Character = "a"
            switch character {
            case "a", "A":
                print("The letter A")
            default:
                print("Not the letter A")
            } // The letter A
            
            switch string {
                case "Jack", "Rose":
                    print("Right person")
                default:
                break
            } // Right person
            
    //        区间匹配
              let count = 62
            switch count {
            case 0:
                print("none")
            case 1..<5:
                print("a few")
            case 5..<12:
                print("several")
            case 12..<100:
                print("dozens of")
            case 100..<1000:
                print("hundreds of")
            default:
                print("many")
            } // dozens of
            
    //       元组匹配
            let point = (1, 1)
            switch point {
            case (0, 0):
                print("the origin")
            case (_, 0):
                print("on the x-axis")
            case (0, _):
                print("on the y-axis")
            case (-2...2, -2...2):
                print("inside the box")
            default:
            print("outside of the box") } // inside the box
            //可以使用下划线 _ 忽略某个值
            //关于case匹配问题,属于模式匹配(Pattern Matching)的范畴,以后会再次详细展开讲解
            
            //值绑定
            let point2 = (2, 0)
            switch point2 {
                case (let x, 0):
                    print("on the x-axis with an x value of \(x)")
                case (0, let y):
                    print("on the y-axis with a y value of \(y)")
                case let (x, y):
                    print("somewhere else at (\(x), \(y))")
            } // on the x-axis with an x value of 2
            //必要时let也可以改为var
            
    //        where
             let point3 = (1, -1)
            switch point3 {
            case let (x, y) where x == y:
                print("on the line x == y")
            case let (x, y) where x == -y:
                print("on the line x == -y")
            case let (x, y):
                print("(\(x), \(y)) is just some arbitrary point")
            } // on the line x == -y
            
            // 将所有正数加起来
            let numbers = [10, 20, -10, -20, 30, -30]
            var sum = 0
            for num in numbers where num > 0 { // 使用where来过滤num
                sum += num
            }
            print(sum) // 60
    
    //        标签语句
            outer: for i in 1...4 {
                for k in 1...4 {
                    if k == 3 {
                        continue outer
                    }
                    
                    if i == 3 {
                        break outer
                    }
                    print("i == \(i), k == \(k)")
                }
            }
    

    相关文章

      网友评论

          本文标题:笔记02 swift 流程控制

          本文链接:https://www.haomeiwen.com/subject/lzwcrltx.html