iOS讲解迷惑--Swift的分支结构和循环

来源:互联网 发布:java接受formdata 编辑:程序博客网 时间:2024/05/16 16:05

if else

//*******************  分支语句  **********************// if语句的条件必须是bool值 或者bool表达式// bool值只能用true或者falselet isOrNo = trueif isOrNo {    print("true")} else {    print("false")}var count:Int? = nil // "?" 代表可选count = 20if count > 0 {    print(count) // "Optional(20)\n"        // \() 用于拼接变量和字符串    print("数字 count 是\(count)"); //"数字 count 是Optional(20)\n"    print("数字 count 是\(count!)"); // "数字 count 是20\n" !代表拆包} else {    print(count)}// 拼接let str_pinJie = "数字count是\(count)"//"数字count是Optional(20)"let str_pinJie2 = "数字count是\(count!)" // "数字count是20", 加了!号 解包// 也可把 声明变量的表达式 作为条件if let count1 = count {    print("OK")} else {    print("error")}// ps: 分支语句原则上必须保持完整 (有了if 就得有 else)

循环

// ************// 循环 whilevar number = 0while number < 3 {    number++    print("number = \(number)")}number// do whilerepeat {    number++} while number < 10// for循环for (var num = 0; num < 10; num++) {    print("num = \(num)")}// for循环条件可以省略, 但是分号不能省略// 这是个死循环//for ; ;  {//    print("循环")//}// for循环的省略机制//for ; number < 2; {//    print(number)//    number++//}array// for ... in 循环, 变量可以不声明, 只作用于循环作用域中for num2 in array {    print(num2) //(7 times)}var dic = [33 : "value"]for value in dic {    print(value) // (33, "value") ,打印出的类型是元组        // 枚举字典的时候获得的将是一个存放了键 值的元组, 可通过元组的取值规范获取内容    value.0 // 33    value.1 // "value"}// 使用元组枚举字典的时候, 相当于为元组的元素命名, 可作为局部变量使用for (key, value) in dic {    print(key) // "33\n"    print(value) // "value\n"}// 占位符 _// 使用占位符忽略掉不想使用的变量for (_, value) in dic {    print(value) // "value\n"}for (key, _) in dic {    print(key)}// 区域运算符在循环中的使用for value in 1..<5 {    print(value)// (4 times)}for value in 1...5 {    print(value) // (5 times)}for value in array[2..<3] {    print(value)}

switch case

// 分支....... switchvar point = (2,0)switch point {case (0,0):    print("原点")case(_, 0):    print("X轴") // 执行这个分支        // switch case 分支自带有break, 如果想执行下一分支 使用fallthrough        fallthrough //  跳过当前分支, 执行下一个分支的内容, 当前分支也执行case(0,_):    print("Y轴")    //default://    print("其他(象限内)")   // 只要case包含所有情况, 可以不使用default// switch语句必须包含所有的情况分支case(_, _): //        print("其他(象限内)")    }// 值绑定switch point {case (0, 0) :    print("原点")case (let x, 0):        // 把x坐标绑定到 let x上    // let x 可以显示任意的数    print("X轴 == \(x)") // "X轴 == 2\n"    //  fallthrough不能下降到一个存在一个不确定变量的分支中    case (0, let y):    print("y轴")default:    print("象限内")}/*fallthrough下面的那个case不能声明新变量、常量,也就是不能跳转到case后面接var或者let的语句的。原因是因为fallthrough不会检查where匹配条件,这样便会导致var或者let声明的变量常量无法得到值,所以swift禁止fallthrough到这样的case中。*/switch point {case (0, 0) :    print("原点")    // 给绑定的x 添加限定条件case (let x, 0) where x == 3 || x == 2:    // where在分支基础上可以添加限定条件 如果想添加多个限定条件的话可以使用 && ||        print("X轴 == \(x)")        //    不能下降到一个存在一个不确定变量的分支中    //    fallthrough 不能下降到    case (0, let y):    print("y轴")default:    print("象限内")}// 区间匹配// switch 与区间运算符的结合使用var number2 = 20switch number2 {case 0...10: // 如果是0 到 10    print(number2)//case 11...100: // 20在11 到 100区间 会执行这个分支    print(number2)    fallthroughcase 101...200:    print(number2)default:    print(number2)}for value in 1...100 {    print(value)    if value == 2 {        break; // 当等于2的时候跳出循环//        continue; // 跳出等于2的循环, 继续下次循环    }}var tempString = "fdsgafeiourelfhjds"


switch和循环嵌套使用的时候,如要终止循环需要给循环去个名字, 用这个(break循环别名)


// 遍历字符串 str.characters

// tempName: 给循环起名字

// for...in循环与switch结合使用的时候执行break语句,首先被识别为switch分支自带的break. ,如果要想终止循环, 此时需要为循环添加别名,使用别名进行打断循环的操作

// tempName 是这个循环的别名tempName: for tempStr in tempString.characters {    switch tempStr {        case "a", "e", "i", "o" , "u":         print(tempStr)         // 如果元音 打断循环         //break tempName    default:        print(tempStr)    }}




0 0
原创粉丝点击