05-Swift 控制流

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("当前格子是\(当前格子)")
    }
}


转载于:https://my.oschina.net/u/2309294/blog/370426

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值