Swift学习 (二)

2.控制流:

主要有三种类型的语句

  • if,switch和新增的guard
  • for,while
  • break,continue

关于if

语句里的条件不再需要使用()包裹了。


1

2

3

4

let number = 23

if number < 10 {

    print("The number is small")

}

但是后面判断执行的的代码必须使用{}包裹住。

if 后面的条件必须为Boolean表达式

也就是不会隐式地与0进行比较,下面这种写法是错误的,因为number并不是一个boolean表达式,number != 0才是。


1

2

3

int number = 0

if number{

}

关于for

for循环在Swift中变得更方便,更强大。

得益于Swift新添加的范围操作符...与...<

我们能够将之前繁琐的for循环:


1

2

3

4

for (int i = 1; i <= 5; i++)

{

    NSLog(@"%d", i);

}

改写为:


1

2

3

for index in 1...5 {

    print(index)

}

虽然在《The Swift Programming Language》里面没有提到类似的用法,但是在Swift中我们也有优雅的方法办到。


1

2

3

for index in stride(from: 1, through: 5, by: 2) {

    print(index)

}// through是包括5

然后对字典的遍历也增强了.在Objective-c的快速枚举中我们只能对字典的键进行枚举。


1

2

3

4

NSString *key;

for (key in someDictionary){

     NSLog(@"Key: %@, Value %@", key, [someDictionary objectForKey: key]);

}

而在Swift中,通过tuple我们可以同时枚举key与value:


1

2

3

4

let dictionary = ["firstName":"Mango","lastName":"Fang"]

for (key,value) in dictionary{

    print(key+" "+value)

}

关于Switch:

Swich在Swift中也得到了功能的增强与安全性的提高。

不需要Break来终止往下一个Case执行

也就是下面这两种写法是等价的。


1

2

3

4

5

6

7

8

9

let character = "a"

switch character{

    case "a":

        print("A")

    break

    case "b":

        print("B")

    break

default: print("character")


1

2

3

4

5

6

7

let character = "a"

switch character{

    case "a":

        print("A")

    case "b":

        print("B")

default: print("character")

这种改进避免了忘记写break造成的错误,自己深有体会,曾经就是因为漏写了break而花了一段时间去debug。

如果我们想不同值统一处理,使用逗号将值隔开即可。


1

2

3

4

switch some value to consider {

case value 1,value 2:

    statements

}

在Swift中,Switch支持的类型大大的拓宽了。

这意味在开发中我们能够能够对字符串,浮点数等进行匹配了。

之前在OC繁琐的写法就可以进行改进了:


1

2

3

4

5

6

7

8

9

if ([cardName isEqualToString:@"Six"]) {

    [self setValue:6];

else if ([cardName isEqualToString:@"Seven"]) {

    [self setValue:7];

else if ([cardName isEqualToString:@"Eight"]) {

    [self setValue:8];

else if ([cardName isEqualToString:@"Nine"]) {

    [self setValue:9];

}


1

2

3

4

5

6

7

8

9

10

switch carName{

    case "Six":

        self.vaule = 6

    case "Seven":

        self.vaule = 7

    case "Eight":

        self.vaule = 8

    case "Night":

        self.vaule = 9   

}

时间: 2024-12-16 09:33:40

Swift学习 (二)的相关文章

Swift学习二

参考博客:http://blog.csdn.net/jaywon //swift不会自动为变量赋初始值,必须手动添加初始值 //数组 Arraylet array:Array = []; 声明一个空数组var array1 = String[]() 声明一个字符串数组往数组末尾添加新元素array.append("新元素")array += "新元素"array += ["新元素1","新元素2",...]往数组里的指定位置添

swift学习二:基本的语法

声明本文转载自:http://www.cocoachina.com/applenews/devnews/2014/0603/8653.html Swift是什么? Swift是苹果于WWDC 2014公布的编程语言,这里引用The Swift Programming Language的原话:  Swift is a new programming language for iOS and OS X apps that builds on the best of C and Objective-C

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];

Swift学习笔记(二)参数类型

关于参数类型,在以前的编程过程中,很多时间都忽视了形参与实参的区别.通过这两天的学习,算是捡回了漏掉的知识. 在swift中,参数有形参和实参之分,形参即只能在函数内部调用的参数,默认是不能修改的,如果想要修改就需要在参数前添加var声明. 但这样的声明过后,仍旧不会改变实参的值,这样就要用到inout了,传递给inout的参数类型必须是var类型的,不能是let类型或者字面类型,(字面类型是在swift中常提的一个术语,个人认为就是赋值语句,也不能修改)而且在传递过程中,要用传值符号"&

Swift学习——格式控制符和元组流程控制(二)

Swift中的格式控制符和元祖 (1)首先介绍一下元祖,元祖是关系型数据库中  例如学生表中的姓名,年龄,电话等 定义如下 var studentinfo = ("jhon",29,"123456") println(studentinfo.0) 访问的时候是通过下标来访问的. //元组本身是以一个整体存在的,如果用下标获取元祖的某一项的数据时 //可以通过点语法加下标的形式得到,这叫元祖的拆包 println("name:\(studentinfo.0)

Swift学习——Swift基础详解(二)

上节说了没有营养的变量和常量,这玩意,都差不多,自己稍微看下就好了 Integers    整型 整数就是整数了,没有小数,整数有符号(+,-,0)或者无符号(0,+) Swift提供了8,16,32,64位的有符号和无符号的整数,命名使用C的方式,比如,8位无符号的整型UInt8,32位有符号的整型就是Int32 Integer Bounds    整型范围 可以使用min 和 max获取整数类型的最大值和最小值 let minValue = UInt8.min // minValue is

Swift学习笔记(二):属性、元组

一.属性的getter和setter //设置计算型属性:其并不真正的存储值,而是每次通过其他值计算得来 var subtotal: Double { //getter:通过total.taxPct计算获得total的值 get { return total / (taxPct + 1) } //setter:更新的是相关的值(比如此处基于newSubtotal来设置total.taxPct的值) set(newSubtotal) { //... } } 二.元组 | Tuples //创建一个

Swift 学习之二十一:?和 !(详解)

Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值, 也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化 .如果在使用变量之前不进行初始化就会报错: [plain] view plaincopyprint? var stringValue : String //error: variable 'stringValue' used before being initialized //let hashValue = stringValue.hashV

Swift开发学习(二):Playground

Swift开发学习:Playground 关于 对于软件用户.游戏玩家,大家一直都在提倡用户体验.其实软件开发者自己也是用户,是各种开发工具的使用者,也会喜欢用户体验做得好的工具软件.这次苹果想开发者所想,提供了一个可以玩转swift的游乐场--Playground,它为开发着提供了方便.提供了乐趣. 原文作者:Power 转载请保留此链接. Playground可以干什么 快速练习swift 不需要编译.不需要点击执行,编写代码后直接看效果 是不是比脚本语言还方便? 开发者可以通过Playgr

swift学习笔记之二——集合

//=========================== //2014/7/21 17:27 swift集合 //=========================== swift提供了两种集合类型,arrays和dictionaryies,两种集合都是可变的,可以在集合声明后对其进行新增.删除和修改操作. 1.array 数组的定义与java数组相同,但swift的数组提供了更灵活的创建方式和操作方式. 数组创建和初始化方式: var array1: Array<T> = [val1,va