知识点:
- for in循环中的变量可以使用下划线_,意思是不需要用到此变量,系统就不会给变量分配存储空间
- switch中case后面必须有可执行的语句,如果有许多结果需要执行同一个语句的话,swift支持多条件匹配
- switch支持范围匹配
- switch可以匹配元组数据
- switch可以绑定数值
- switch中的case可以使用where来增加判断条件
- fallthrough关键字,当执行完前case后,会接着执行fallthrough后面的case或者default语句,fallthrough后面的case语句中的判断条件不能定义变量
- 标签
示例代码:
//: Playground - noun: a place where people can play
import UIKit
// 1、for in循环
// 这里的i是let型,即常量,如果在循环体重更改i的值的话会报错
for i in 1...4 {
println("***********\(i)")
}
// 如果没用到i值的话,可以将其写成下划线_,这样系统就不会为i开辟存储空间
for _ in 1...4 {
println("***********")
}
// 2、switch语句
// switch要求必须处理所有情况,否则报错。所以default一般是不省略
// swift中switch语句的参数可以是字符串
// swift中的switch的case中没有break
let flag = "abc"
switch flag {
case "abc":
println("abc")
case "bcd":
println("bcd")
case "def":
println("def")
default:
println("default")
}
// switch中case后面必须有可执行的语句,如果有许多结果需要执行同一个语句的话,swift支持多条件匹配
var gread = 90 / 10
switch gread {
case 10, 9:
println("优秀")
case 8, 7:
println("良好")
case 6:
println("及格")
default:
println("不及格")
}
// switch中的范围匹配
var score = 95
switch score {
case 90...100:
println("优秀")
case 89...60:
println("良好")
default:
println("不及格")
}
// switch匹配元组数据
// 判断point是否在一个X轴为-2...2,Y轴为-2...2的矩形框内
let point = (1, 1)
switch point {
case (0, 0):
println("这个点是坐标原点")
// 这里的下划线_可以理解为忽略掉X轴的值,或者理解为任何值都行
case (_, 0):
println("这个点在X轴上")
case (0, _):
println("这个点在Y轴上")
case (-2...2, -2...2):
println("这个点在一个X轴为-2...2,Y轴为-2...2的矩形框内")
default:
println("这个点在矩形之外")
}
// case的数值绑定
let point1 = (10, 0)
switch point1 {
case (let x, 0):
println("点位于X轴上,X值为\(x)")
case (0, let y):
println("点位于Y轴上,Y值为\(y)")
// 这里的写法相当于case (let x, let y)
case let (x, y):
println("X值为\(x),Y值为\(y)")
}
// switch中的case可以使用where来增加判断条件
let point2 = (10, -10)
switch point2 {
case let (x, y) where x == y:
println("单调递增")
case let (x, y) where x == -y:
println("单调递减")
default:
println("不在这两条线上")
}
// fallthrough
// 当执行完前case后,会接着执行fallthrough后面的case或者default语句
// fallthrough后面的case语句中的判断条件不能定义变量
let num = 20
var str = "\(num)是个"
switch num {
case 0...50:
str += "0~50之间的"
fallthrough
default:
str += "整数"
}
// 3、标签
out: for _ in 1...2 {
for _ in 1...3 {
println("start")
// 这里的break是跳出当前循环
// break
// 这里的break是跳出父循环,out就是标签
break out
}
println("==========")
}