文档章节

Swift学习—流程控制

TomatosX
 TomatosX
发布于 2015/05/20 10:23
字数 807
阅读 67
收藏 0

知识点:

  1. for in循环中的变量可以使用下划线_,意思是不需要用到此变量,系统就不会给变量分配存储空间
  2. switch中case后面必须有可执行的语句,如果有许多结果需要执行同一个语句的话,swift支持多条件匹配
  3. switch支持范围匹配
  4. switch可以匹配元组数据
  5. switch可以绑定数值
  6. switch中的case可以使用where来增加判断条件
  7. fallthrough关键字,当执行完前case后,会接着执行fallthrough后面的case或者default语句,fallthrough后面的case语句中的判断条件不能定义变量
  8. 标签
示例代码:

//: 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("==========")
}

© 著作权归作者所有

TomatosX
粉丝 22
博文 207
码字总数 119547
作品 0
成都
iOS工程师
私信 提问
Swift讲解专题六——流程控制

Swift讲解专题六——流程控制 一、引言 一种编程语言的强大与否,很大程度上取决于其提供的程序流程控制方案,就如使用汇编语言实现复杂的程序流程是一件痛苦的事情。Swift中提供了许多强大的...

珲少
2016/05/12
383
0
简单介绍 Swift on Fedora —— 在 Fedora 中使用 Swift

Swift 是一门通用编程语言,使用现代方法构建安全性、性能和软件设计模式。它旨在成为各种编程项目的最佳语言 —— 从系统编程到桌面应用程序,以及云服务。下面将和大家简单介绍一下 Swift ...

局长
2018/10/10
1K
2
Swift学习第一练——用Swift实现的FlappyBird小游戏

用Swift实现的FlappyBird小游戏 伴随着apple公司对swift的推广态度深入,swift火的很快,并且swift精简便捷的语法和强大的功能,对于使用Object—C开发iOS的开发者来说,也有必要了解学习一下...

珲少
2015/06/11
0
7
swift 流程控制

swift 流程控制 // // main.swift // swift流程控制 // // Created by zhangbiao on 14-6-13. // Copyright (c) 2014年 理想. All rights reserved. // import Foundation // swift 流程控制......

法斗斗
2016/03/03
3
0
Swift是花拳绣腿吗?——谈谈开发语言与程序员的职业发展

作者简介: 任旻,北京工业大学硕士, 2005年加入微软中国有限公司,2009年加入腾讯,现任高级工程师,曾负责开发“QQ概念版”、“Q+”、”QQ互联”、“iPad QQ”等产品。腾讯学院讲师,专利...

腾讯Bugly
2015/11/26
215
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins的配置

1 修改jenkins的根目录,默认地在C:\Documents and Settings\AAA\.jenkins 。 .jenkins ├─jobs │ └─JavaHelloWorld │ ├─builds │ │ ├─2011-11-03_16-48-17 │ │ ├─2011-11-0......

shzwork
23分钟前
1
0
使用 spring 的 IOC 解决程序耦合

工厂模式解耦 在实际开发中我们可以把三层的对象都使用配置文件配置起来,当启动服务器应用加载的时候,让一个类中的方法通过读取配置文件,把这些对象创建出来并存起来。在接下来的使用的时...

骚年锦时
27分钟前
1
0
group by分组后获得每组中时间最大的那条记录

用途: GROUP BY 语句用于 对一个或多个列对结果集进行分组。 例子: 原表: 现在,我们希望根据USER_ID 字段进行分组,那么,可使用 GROUP BY 语句。 我们使用下列 SQL 语句: SELECT ID,US...

豆花饭烧土豆
今天
3
0
android6.0源码分析之Camera API2.0下的Preview(预览)流程分析

本文将基于android6.0的源码,对Camera API2.0下Camera的preview的流程进行分析。在文章android6.0源码分析之Camera API2.0下的初始化流程分析中,已经对Camera2内置应用的Open即初始化流程进...

天王盖地虎626
今天
4
0
java 序列化和反序列化

1. 概述 序列恢复为Java对象的过程。 对象的序列化主要有两 首先我们介绍下序列化和反序列化的概念: 序列化:把Java对象转换为字节序列的过程。 反序列化:把字节序列恢复为Java对象的过程。...

edison_kwok
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部