01-for in循环
for index in 1...5 {
println("\(index) × 5 = \(index * 5)")
}
var 底数 = 2
var 幂数 = 10
var 结果 = 1
// for in的循环变量可以省略
for _ in 1...幂数 {
结果 *= 底数
}
// 数组的遍历
var 所有学科 = ["语文", "数学", "英语", "物理", "化学"]
for 学科 in 所有学科 {
println(学科)
}
// 字典的遍历
var 所有学科的分数 = ["语文" : 100, "数学" : 110, "英语" : 105, "物理" : 95, "化学" : 90]
for 学科的分数 in 所有学科的分数 {
println(学科的分数)
}
// 字符串的遍历
for 单个字符 in "(*^__^*)" {
println(单个字符)
}
02-for循环
for var index = 1 ; index < 4 ; ++index {
println("\(index) × 3 = \(index * 3)")
}
03-while循环
let 棋盘的格子数 = 25
var 棋盘 = [Int](count: 棋盘的格子数 + 1, repeatedValue: 0)
var 当前格子 = 0
var 色子 = 0
// 云梯
棋盘[3] = 8
棋盘[6] = 11
棋盘[9] = 9
棋盘[10] = 2
// 蛇
棋盘[14] = -10
棋盘[19] = -11
棋盘[22] = -2
棋盘[24] = -8
while (当前格子 < 棋盘的格子数) {
// 模拟随机数
if (++色子 == 7) {
色子 = 1
}
当前格子 += 色子
println("当前格子是\(当前格子)")
// 避免数组越界
if (当前格子 < 棋盘.count) {
var 前进步数 = 棋盘[当前格子]
if (前进步数 > 0) {
println("恭喜你,遇到云梯,前进\(前进步数)步")
} else if (前进步数 < 0) {
println("真倒霉,遇到蛇头,倒进\(-前进步数)步")
}
当前格子 += 前进步数
}
}
println("当前格子是\(当前格子)")
04-do while循环
let 棋盘的格子数 = 25
var 棋盘 = [Int](count: 棋盘的格子数 + 1, repeatedValue: 0)
var 当前格子 = 0
var 色子 = 0
// 云梯
棋盘[3] = 8
棋盘[6] = 11
棋盘[9] = 9
棋盘[10] = 2
// 蛇
棋盘[14] = -10
棋盘[19] = -11
棋盘[22] = -2
棋盘[24] = -8
do {
// 模拟随机数
if (++色子 == 7) {
色子 = 1
}
var 步数 = 棋盘[当前格子]
if (步数 > 0) {
println("遇到云梯,前进\(步数)步")
}
if (步数 < 0) {
println("遇到蛇头,倒进\(步数)步")
}
当前格子 += 步数 + 色子
println("当前格子是\(当前格子)")
} while (当前格子 < 棋盘的格子数)
05-条件语句if
var 分数 = 90
if (分数 > 90) {
println("优秀")
} else if (分数 < 60) {
println("不及格")
} else {
println("良好")
}
06-条件语句switch
var someCharacter :Character = "a"
// switch的条件分支不允许为空
switch someCharacter {
case "a", "e", "i", "o", "u" :
println("\(someCharacter) is avowel")
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 consonant")
default :
println("\(someCharacter) is not a vowel")
}
07-条件语句switch的区间匹配
var 分数 = 95
var 评价 : String
switch 分数 {
case 0...59 :
评价 = "不及格"
case 60...79 :
评价 = "及格"
case 80...90 :
评价 = "良好"
case 91...100 :
评价 = "优秀"
default :
评价 = "缺考"
}
08-条件语句switch的元组匹配
var 坐标 = (1, 0)
switch 坐标 {
case (0, 0) : "在原点上"
case (_, 0) : "在X轴上"
case (0, _) : "在Y抽上"
case (-2...2, -2...2) : "在指定的范围内"
default : "不在指定的范围内"
}
09-条件语句switch的值绑定
var 坐标 = (6, 6)
switch 坐标 {
case (var x, 0) : "坐标在X抽上,值是\(x)"
case (0, var y) : "坐标在Y抽上,值是\(y)"
case (var x, var y) : "在X抽上值是\(x),在Y抽上值是\(y)"
}
10-条件语句switch的值绑定where筛选
var 坐标 = (1, -4)
switch 坐标 {
case var (x, y) where (x == y) : "(\(x), \(y))的横坐标和纵坐标相等"
case var (x, y) where (x > 0 && y > 0) : "(\(x), \(y))在第一象限"
case var (x, y) : "坐标(\(x), \(y))"
}
11-控制转移语句continue
var 网址列表 = ["qq.com", "google.hk", "baidu.com", "facebook.com"]
for 网址 in 网址列表 {
switch 网址 {
case var url where (网址.hasPrefix("facebook") || 网址.hasSuffix("hk")) : continue
default : println("即将打开\(网址)")
}
}
12-控制转移语句break
var 网址列表 = [
"developer.apple.com",
"google.com",
"baidu.com",
"qq.com",
"wikipedia.org",
"sf.net",
"github.com",
"jamesonquave.com",
]
for 网址 in 网址列表 {
if (网址.hasSuffix("qq.com")) {
break
}
println(网址)
}
var url = "baidu.com"
var 网址分类 : String?
switch url {
case "developer.apple.com", "wikipedia.org" : 网址分类 = "知识库网站"
case "github.com", "sf.net" : 网址分类 = "源代码网站"
case "jamesonquave.com", "wikipedia.org" : 网址分类 = "技术博客网站"
case "google.com", "baidu.com" : 网址分类 = "资料搜索网站"
default : break
}
if var 类型 = 网址分类 {
println("\(url)是\(类型)")
} else {
println("未分类")
}
13-控制转移语句fallthrough
var 数字 = 3
switch 数字 {
case 1, 3, 5, 7, 9 :
print("\(数字)是1到10之间的奇数")
fallthrough
default :
println(",同时也是一个整数")
}
14-标签语句
let 棋盘的格子数 = 25
var 棋盘 = [Int](count: 棋盘的格子数 + 1, repeatedValue: 0)
var 当前格子 = 0
var 色子 = 0
// 云梯
棋盘[3] = 8
棋盘[6] = 11
棋盘[9] = 9
棋盘[10] = 2
// 蛇
棋盘[14] = -10
棋盘[19] = -11
棋盘[22] = -2
棋盘[24] = -8
// 标签语句
gameloop : while (当前格子 != 棋盘的格子数) {
// 模拟随机数
if (++色子 == 7) {
色子 = 1
}
switch 当前格子 + 色子 {
case 棋盘的格子数 : break gameloop
case var 当前格子数 where (当前格子数 > 棋盘的格子数) : continue gameloop
default :
var 步数 = 棋盘[当前格子]
if (步数 > 0) {
println("遇到云梯,前进\(步数)步")
}
if (步数 < 0) {
println("遇到蛇头,后进\(步数)步")
}
当前格子 += 步数 + 色子
println("当前格子是\(当前格子)")
}
}