在代码业务中,条件判断是必不可少的,控制流程的语句在每种语言中都是差不多的。swift包括了:
if,switch,for-in,for,while,do-while
if 条件语句 (if else) (if... else if ... else)
判断条件为true时执行相关代码。例如:
var a = 0
if a > 0 {
println("a > 0")
}else if a == 0{
println("a = 0")
}else{
println("a < 0")
}
switch switch语句会尝试把某个值与若干个模式(pattern)进行匹配。根据第一个匹配成功的模式,switch语句会执行对应的代码
例如:
let someCharacter: Character = "e" switch someCharacter { case "a", "e", "i", "o", "u": println("\(someCharacter) is a vowel") case "b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z": println("\(someCharacter) is a consonant") default: println("\(someCharacter) is not a vowel or a consonant") }
switch有几个注意事项:
1、case语句下必须包含至少一行代码
2、case语句下可以不包含break,它不存在隐式的贯穿
3、case可以进行区间匹配
let count = 3_000_000_000_000 let countedThings = "stars in the Milky Way" var naturalCount: String switch count { case 0: naturalCount = "no" case 1...3: naturalCount = "a few" case 4...9: naturalCount = "several" case 10...99: naturalCount = "tens of" case 100...999: naturalCount = "hundreds of" case 1000...999_999: naturalCount = "thousands of" default: naturalCount = "millions and millions of" } println("There are \(naturalCount) \(countedThings).")
例如:
let somePoint = (1, 1) switch somePoint { case (0, 0): println("(0, 0) is at the origin") case (_, 0): println("(\(somePoint.0), 0) is on the x-axis") case (0, _): println("(0, \(somePoint.1)) is on the y-axis") case (-2...2, -2...2): println("(\(somePoint.0), \(somePoint.1)) is inside the box") default: println("(\(somePoint.0), \(somePoint.1)) is outside of the box") }
5、值绑定 case 分支的模式允许将匹配的值绑定到一个临时的常量或变量,这些常量或变量在该 case 分支里就可以被引用了——这种行为被称为值绑定
例如:
let anotherPoint = (2, 0) switch anotherPoint { case (let x, 0): println("on the x-axis with an x value of \(x)") case (0, let y): println("on the y-axis with a y value of \(y)") case let (x, y): println("somewhere else at (\(x), \(y))") } // 输出 "on the x-axis with an x value of 2"
例如
let yetAnotherPoint = (1, -1) switch yetAnotherPoint { case let (x, y) where x == y: println("(\(x), \(y)) is on the line x == y") case let (x, y) where x == -y: println("(\(x), \(y)) is on the line x == -y") case let (x, y): println("(\(x), \(y)) is just some arbitrary point") } // 输出 "(1, -1) is on the line x == -y"
a)continue语句告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。就好像在说“本次循环迭代我已经执行完了”,但是并不会离开整个循环体。
b)break语句会立刻结束整个控制流的执行。当你想要更早的结束一个switch代码块或者一个循环体时,你都可以使用break语句,if for for-in while do-while 这些都能够用break跳出控制,
c)fallthrough 贯穿 这个和第二点一样。
d)return语句会立刻终止当前代码的执行,并返回。用在方法控制中比较多。
8、给while取一个名字 例如
mainLabel: while a > 0{ if a ==100 { break mainLabel } }
for 循环 for-in循环
for循环用来按照指定的次数多次执行一系列语句。Swift 提供两种for循环形式:
a)for-in用来遍历一个区间(range),序列(sequence),集合(collection),系列(progression)里面所有的元素执行一系列语句。
b)for条件递增(for-condition-increment)语句,用来重复执行一系列语句直到达成特定条件达成,一般通过在每次循环完成后增加计数器的值来实现。
遍历区间:
for index in 1...5 { println("\(index) times 5 is \(index * 5)") }
let names = ["Anna", "Alex", "Brian", "Jack"] for name in names { println("Hello, \(name)!") }
let numberOfLegs = ["spider": 8, "ant": 6, "cat": 4] for (animalName, legCount) in numberOfLegs { println("\(animalName)s have \(legCount) legs") }
for character in "Hello" { println(character) }
for var index = 0; index < 3; ++index { println("index is \(index)") }
while循环 do-while循环
while循环,每次在循环开始时计算条件是否符合;
do-while循环,每次在循环结束时计算条件是否符合。
while循环:
while condition { statements }
while a > 0{ println("a value \(a)"); }
do { statements } while condition
do{ println("a value \(a)") }while a > 0
【Swift】学习笔记(五)——控制语句(if,switch,for-in,for,while,do-while)
原文地址:http://blog.csdn.net/fcly2013/article/details/40536315