在代码业务中,条件判断是必不可少的,控制流程的语句在每种语言中都是差不多的。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).")
4、元组 你可以使用元组在同一个switch语句中测试多个值。元组中的元素可以是值,也可以是区间。另外,使用下划线(_)来匹配所有可能的值
例如:
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"
6、where条件判断
例如
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"
7、能够使用return,continue,break,fallthrough 来改变所有控制语句的控制流程。这叫做控制转移。
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-while循环
do {
statements
} while condition
do{
println("a value \(a)")
}while a > 0
哇、好强大,这循环用起来应该很爽啊。。。虽然用得最多的就是for循环,呵呵。