Swift 流程控制

Swift 流程控制,第1张

概述一.for循环 for-in 实例1: for index in 1...5{ print("\(index)times 5 is \(index * 5)") }结果: 1times 5 is 52times 5 is 103times 5 is 154times 5 is 205times 5 is 251...5表示:[1,5]大

一.for循环

for-in

实例1:

       for index in 1...5{            print("\(index)times 5 is \(index * 5)")        }
结果:
1times 5 is 52times 5 is 103times 5 is 154times 5 is 205times 5 is 25
1...5表示:[1,5]大于等于1且小于等于5

如果括号内不使用index,可以用_代替:

 var a = 5        for _ in 1...5{            a += 1        }        print("\(a)")
结果:
10

遍历数组:
 let nameArr = ["lili","Marry","xiaoming"]        for name in nameArr {            print("Hello,\(name)!")        }       
结果:
Hello,lili!Hello,Marry!Hello,xiaoming!

遍历字典:

  let ageDict = ["lili":9,"Marry":10,"xiaoming":12]        for (name,age) in ageDict {            print("\(name) is \(age)!")        }
结果:
Marry is 10!lili is 9!xiaoming is 12!
由于字典是无序的,所以结果不一定按顺序输出。


二。while循环

语法:

    while condition {        statements    }
举例:
   //唉,举例无能        var a = 10        while a>0 {            a = a-2        }        print(a)
结果:0

原来的do...while循环在此处替换成了repeat...while循环。(不举例了)


三。switch

实例:

        let someCharacter: Character = "z"        switch someCharacter {        case "a":            print("The first letter of the Alphabet")        case "z":            print("The last letter of the Alphabet")        default:            print("Some other character")        }
结果:
The first letter of the Alphabet

* 注意:与C和Objective_C不同,3.0的swift中switch语句的case中不再需要使用break跳出switch语句,匹配条件后即跳出Switch语句,同时,switch中的default是必须的。

虽然break在switch中不再是必须的,但是由于switch中的case/default中语句不允许有空语句,此时,我们可以使用break跳出语句。

例如:

    let anotherCharacter: Character = "a"        switch anotherCharacter {        case "a": // InvalID,the case has an empty body        case "A":            print("The letter A")        default:            print("Not the letter A")        }        if let integerValue = possibleIntegerValue {            print("The integer value of \(numberSymbol) is \(integerValue).")        } else {            print("An integer value Could not be found for \(numberSymbol).")        }
case "a":是无效的,这将导致程序报错: 'case' label in a 'switch' should have at least one executable statement。

再看下面这个例子
  let numberSymbol: Character = "三"  // Chinese symbol for the number 3        var possibleIntegerValue: Int?        switch numberSymbol {        case "1","١","一","๑":            possibleIntegerValue = 1        case "2","٢","二","๒":            possibleIntegerValue = 2        case "3","٣","三","๓":            possibleIntegerValue = 3        case "4","٤","四","๔":            possibleIntegerValue = 4        default:            break        }        if let integerValue = possibleIntegerValue {            print("The integer value of \(numberSymbol) is \(integerValue).")        } else {            print("An integer value Could not be found for \(numberSymbol).")        }        // Prints "The integer value of 三 is 3."
此时,default中的可能性很多,我们可能不再需要设置一个possibleIntegerValue的值,此时就可以使用break跳出switch语句。

间隔匹配:

例如:

 let grade = 67        switch grade {        case 0...59:            print("不及格")        case 60...79:            print("及格")        case 80...89:            print("良好")        case 90...100:            print("优秀")        default:            break        }//输出:及格
元祖(Tuples)匹配:
    let somePoint = (1,1)    switch somePoint {    case (0,0):        print("(0,0) is at the origin")    case (_,0):        print("(\(somePoint.0),0) is on the x-axis")    case (0,_):        print("(0,\(somePoint.1)) is on the y-axis")    case (-2...2,-2...2):        print("(\(somePoint.0),\(somePoint.1)) is insIDe the Box")    default:        print("(\(somePoint.0),\(somePoint.1)) is outsIDe of the Box")    }    // Prints "(1,1) is insIDe the Box"
下划线(_)也称为通配符,可以匹配任何可能的值。

值绑定:

    let anotherPoint = (2,0)    switch anotherPoint {    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))")    }    // Prints "on the x-axis with an x value of 2"

where:Switch中还可以使用where来设置附加条件

例如:

    let yetAnotherPoint = (1,-1)    switch yetAnotherPoint {    case let (x,y) where x == y:        print("(\(x),\(y)) is on the line x == y")    case let (x,y) where x == -y:        print("(\(x),\(y)) is on the line x == -y")    case let (x,y):        print("(\(x),\(y)) is just some arbitrary point")    }    // Prints "(1,-1) is on the line x == -y"

控制转移语句:

1.continue;

2.break(不再重复说明);

3.fallthrough;

4.return.

5.throw。


continue:跳出当前循环,执行下一次循环。

例如:

    let puzzleinput = "great minds think alike"    var puzzleOutput = ""    for character in puzzleinput.characters {        switch character {        case "a","e","i","o","u"," ":            continue        default:            puzzleOutput.append(character)        }    }    print(puzzleOutput)    // Prints "grtmndsthnklk"

fallthrough:条件匹配成功后,继续执行后面的语句。

例如:

    let integerToDescribe = 5    var description = "The number \(integerToDescribe) is"    switch integerToDescribe {    case 2,3,5,7,11,13,17,19:        description += " a prime number,and also"        fallthrough    default:        description += " an integer."    }    print(description)    // Prints "The number 5 is a prime number,and also an integer."
return:跳出整个循环与语句。 总结

以上是内存溢出为你收集整理的Swift 流程控制全部内容,希望文章能够帮你解决Swift 流程控制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1073874.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存