Swift学习-----分支

Swift 提供了类似 C 语言的流程控制结构(if/switch/for/while/dowhile)

分支if

* 只能以Bool作为条件语句

* 条件语句不需要加()

* {}不能省略

* Swift 中 if 分支的模式可以使用 where 语句来判断额外的条件

* 其它和 OC if 一样
let number = 10
if number == 10 {
    print("等于10")
}

if number >= 10 && number <= 20 {
    print("等于10")
}
Bool类型

* C语言和OC并没有真正的Bool类型

* OC语言的Bool类型YES/NO是`typedef signed char BOOL;`非0即真‘

Swift引入了真正的Bool类型true/false

* Swift中没有C和OC中非零即真的概念

* Swfit中逻辑值只有两个true/false

* 如果你在需要使用Bool类型的地方使用了非布尔值,Swift 的类型安全机制会报错
三目运算符
* 三目运算符的特殊在于它是有三个操作数的运算符, 它简洁地表达根据问题成立与否作出二选一的操作
* 格式: 问题 ? 答案1 : 答案2

 提示:
* Swift中三目运算符用得很多

 注意:
* 过度使用三目运算符会使简洁的代码变的难懂。我们应避免在一个组合语句中使用多个三目运算符

let number1 = 10

let result = (number1 == 10) ? 10 : 0

分支Switch
* OC中case后面必须加上break否则会贯穿, Swift不用
* Swift中如果想贯穿必须使用fallthrough
* OC中可以不写default,Swift中只有满足所有条件才能忽略default
* OC中default位置可以随便放,Swift不可以
* OC中在case中定义变量需要加大括号, 否则作用域混乱, Swift不用加大括号
* Swift中的switch可以判断区间和元祖
* Swift中case 分支的模式可以使用where语句来判断额外的条件

注意:
Swift中每一个 case 分支都必须包含至少一条语句, 不像 C 语言里的switch语句,在 Swift 中,switch语句不会同时匹配多个条件
switch(rank){
case "A":
case "B":
NSLog(@"还不错")
break
case "C":
NSLog("差")
break
}

let age = 18

switch age {

case 0:

print("刚出生")

case 18:

print("刚成年")

        fallthrough

case 40:

        print("一枝花")

var name = "ssc"

default:

print("other")

}


// 判断元祖

let point = (0, 50)

switch point {

case (0, 0):

print("原点")

case (50, 50):

print("中点")

case (100, 100):

print("右下角")

default:

print("other")

}

// 了解

switch point {

case let (x, y) where x == 0 && y == 0:

print(x)

print(y)

case let (x, y) where x == 50 && y == 50:

print(x)

print(y)

case let (x, y):

print(x)

print(y)

default:

print("other")

}

 
// 判断区间
// 闭区间   0...10  取值范围 0~10 包含头包含尾
// 半闭区间 0..<10  取值范围  0~9 包含头不包含尾

//let range = 0..<18
//let range = 18..<30
let range = 18...20
switch range {
//    case 0..<18:
//        print("未成年")
//    case 18..<30:
//        print("成年人")
//    default:
//        print("老炮")
    case 0...17:
        print("未成年")
    case 18...30:
        print("成年人")
    default:
        print("老炮")
}

let rank = "A"
switch rank {
//    case "A":
//        fallthrough
//    case "B":
//        print("还可以")
    case "A", "B":
        print("还可以")
    case "C":
        print("差")
    default:
        print("回家吧")
}
时间: 2024-10-05 11:04:40

Swift学习-----分支的相关文章

SWIFT学习笔记05

1.Swift 无需写break,所以不会发生这种贯穿(fallthrough)的情况.2.//用不到变量名,可用"_"替换 for _ in 1...power { answer *= base } 3.case 可以匹配更多的类型模式,包括区间匹配(range matching),元组(tuple)和特定类型的描述. 可以这样用case case 1...3: naturalCount = "a few" 4.如果存在多个匹配,那么只会执行第一个被匹配到的 ca

Swift学习笔记

Apple 新推的Swift已经好几天了.对于向我这样的oc都还没完全琢磨透彻的菜鸟来说--(简直就是福利啊,joke) 看了几天的Swift,只是有了基本的印象.总感觉比较换混乱,可能源自与自己没怎么学过脚本语言.索性,边看边记,加深印象. 本来部分内容源自Apple的<The Swift Programming Language>以及互联网教程.其余内容均为个人理解,不保证正确. 进入正题: 1.Swift是什么? Apple唤他作:雨燕.其实英语过了四级的都应该看出来,Swift还有一层

Swift学习笔记五:循环和条件语句

一.循环语句 1. for循环 1) for -in 循环,对于数据范围,序列,集合等中的每一个元素,都执行一次 for a in 0...5{}    //循环迭代,从a=0到a=5,执行{}里的代码 注意:a只循环中存在,也就是出了{}a就不存在了 或者遍历数组 let a = [1,2,3] for b in a{} //循环迭代,从b=1到b=3 如果你不需要序列中的每一个值,可以使用_来忽略它,仅仅只是使用循环体本身: for _ in 0...5{}    //循环执行{}里的代码,

Swift学习笔记 - 可选 ?

可选类型 使用可选类型(optionals)来处理值可能缺失的情况.可选类型表示: 有值,等于 x 或者 没有值 注意:C 和 Objective-C 中并没有可选类型这个概念.最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示“缺少一个合法的对象”.然而,这只对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用.对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失.这种方法假设方法的

Swift学习-枚举(Enumerations)的使用方法

Swift学习-枚举的使用方法 枚举的使用语法: enum someEnumer { // 枚举的成员值 } 以下是方向的一个例子: enum direction { case Up case Down case Left case Right } 以下摘自Swift 中文翻译组 注意: 不像 C 和 Objective-C 一样,Swift 的枚举成员在被创建时不会被赋予一个默认的整数值.在上面的CompassPoints例子中,North,South,East和West不是隐式的等于0,1,

Swift 学习-多线程

1:第一种多线程 func fun1(){ for i in 200...300{ NSLog("%d",i); } } func fun2(){ for i in 300...400{ NSLog("%d",i); } } var th1 = NSThread(target:self,selector:"fun1",object:nil); th1.start(); //开启线程 NSThread.detachNewThreadSelector

SWIFT学习笔记02

1.//下面的这些浮点字面量都等于十进制的12.1875: let decimalDouble = 12.1875 let exponentDouble = 1.21875e1 let hexadecimalDouble = 0xC.3p0//==12+3*(1/16) 2.//类型别名,用typealias关键字来定义类型别名 typealias AudioSample = UInt16 var maxAmplitudeFound = AudioSample.min 3.//元组 let ht

swift学习笔记(三)关于拷贝和引用

在swift提供的基本数据类型中,包括Int ,Float,Double,String,Enumeration,Structure,Dictionary都属于值拷贝类型. 闭包和函数同属引用类型 捕获则为拷贝.捕获即定义这些常量和变量的原作用域已不存在,闭包仍然可以在闭包函数体内引用和修改这些值 class属于引用类型. Array的情况稍微复杂一些,下面主要对集合类型进行分析: 一.关于Dictionary:无论何时将一个字典实例赋给一个常量,或者传递给一个函数方法时,在赋值或调用发生时,都会

Swift学习笔记十二:下标脚本(subscript)

下标脚本就是对一个东西通过索引,快速取值的一种语法,例如数组的a[0].这就是一个下标脚本.通过索引0来快速取值.在Swift中,我们可以对类(Class).结构体(structure)和枚举(enumeration)中自己定义下标脚本的语法 一.常规定义 class Student{ var scores:Int[] = Array(count:5,repeatedValue:0) subscript(index:Int) -> Int{ get{ return scores[index];