Swift讲解专题五——集合类型(一)

简介: Swift讲解专题五——集合类型

一、引言


       本系列专题是我通过阅读Swift2.2语言开发文档,翻译总结加上自己的理解整理而成。其中大部分结构和内容都来自开发文档,有疏漏和错误之处,还望更多朋友指出,共同交流进步,我的QQ:316045346。


二、从HelloWorld开始


       在学习很多编程语言时,都是从HelloWorld入门,下面代码就是一个完整的HelloWorld程序:


print("Hello, World!")

分析上面代码,可以发现Swift语言的3个十分明显的特点:


1.开发者不需要引入输入输出相关的函数库。


2.在编写代码时,不需要在语句的结尾处添加分号。


3.全局的代码就是程序的入口,不需要类似C系语言的main()方法来作为程序入口。


三、常量与变量


       常量和变量是编程语言中最基础的两类数据类型,常量可以理解为为某个值起一个特定的名字,常量通常提供给开发者用于某些只赋值一次但却在程序中多处使用的量值。变量也可以进行多次修改。分别使用let和var创建常量和变量。例如:


let letValue = 4

var varValue = 8

varValue = 16

开发者在进行常量和变量的创建时,并不需要制定类型,编译器与根据第一次赋值的类型来推断出常量或者变量的类型,然而这并不是说Swift语言不严格要求变量或常量的类型,一旦编译器推断了值的类型,之后开发者若要修改变量,则必须严格遵守既定的变量类型,否则编译器会报错。


       如果开发者第一次对变量或常量进行的赋值不能够使编译器正确的推断出常量或变量的类型,开发者也可以通过冒号后跟类型的方式来强制定义变量或常量的类型,如下:


var varValue:Float = 8

varValue = 16.0

在Swift语言中,不存在隐式转换的概念,这也是Swift语言更加安全的特性之一,这样的设计可以保证变量在任何时候类型都被明确的指定。在进行类型转换时,可以通过类实例化的方式进行,示例如下:


//Float值转成Int

letValue+Int(varValue)

//Int转为Float

Float(letValue)+varValue

对于在字符串中使用其他类型的变量,Swift语言提供了一种更加便捷的写法,使用\()的方式来转换,小括号内为变量的名称,例如:


var strValue = "Hello"

//Hello16.0

strValue+"\(varValue)"

四、数组与字典


       数组与字典是最常用的两种数据集合,在Swift语言中,使用[]来创建数组或字典,示例如下:


var array = [1,2,3]

var dic = [1:"one",2:"two",3:"three"]

同Int,Float类型的数据一样,数组和字典在第一次赋值时,也会根据赋值的类型来推断出变量类型,开发者同样也可以强制指定,如下:


var array:[Int] = [1,2,3]

var dic:[Int:String] = [1:"one",2:"two",3:"three"]

Swift允许创建或者重新赋值为空的数据或者字典,但是这有一个前提条件,被赋值为空的数据或字典必须是类型确定的,示例如下:


//这样写会报错

//var errorArray = []

//创建空的数据集合

//方式一

var array:[Int] = []

var dic:[Int:String] = [:]

//方式二

var array2 = [Int]()

var dic2 = [Int:String]()

//方式三

var array3 = [1]

var dic3 = [1:"1"]

array3 = []

dic3 = [:]

五、optional类型的值


       在理解optional类型的值之前,我们可以先来看一段C代码:


int a=1;

if(a){

 

}else{

 

}

上面这段代码对于C语言来说完全没有问题,当a为非0值时,就代表条件为真,在Swift语言中则不同,if选择语句中的条件必须为Bool类型的值,因此,对于某些可以为空的值,Swift中提供了optional类型,这种类型相当于对其他实际类型进行了包装,如果有值,则他拆包后为相应类型的值,如果没有值,则为空值nil。示例如下:


var optionalString: String? = "Hello"

if optionalString == nil {

 

}

在Swift中,当if与let共同使用时,将会构成一种更加奇特的语法方式,这种方式对于处理optional类型的值十分方便,示例如下:


/*

if let 后面赋值为optional类型的值有这样的效果

如果optional的值不为nil 则会走if条件为真的语句块并且将optional变量的值赋值给let常量 可以在if为真的语句块中使用

如果optional的值为nil 则会走else语句块 并且name常量被释放 不能再else块中使用

*/

if let name=optionalName {

   greeting = "Hello, \(name)"

}else{

   print(greeting)

}

除了if let语法外,还有一种方式可以用来处理optional类型的值,示例如下:


var greeting = "Hello!"

greeting = "Hello" + (optionalString ?? "")

??运算符用来为optional类型的值设置一个默认值,如果optional值为nil,则会使用后面设置的默认值来代替。


       Swift语言的switch语句相比于C系的语言要强大的多,其不只可以用于判断整型,其可以处理任意类型的数据,同样,它也不只限于比较是否相等的运算,其可以支持各种负责运算,示例如下:


let vegetable = "red pepper"

switch vegetable {

case "celery":

   print("Add some raisins and make ants on a log.")

case "cucumber", "watercress":

   print("That would make a good tea sandwich.")

case let x where x.hasSuffix("pepper"):

   print("Is it a spicy \(x)?")

default:

   print("Everything tastes good in soup.")

}

如果匹配上了一个case,程序会结束switch选择,各个case之间是互斥的。


六、循环语句


       Swift2.2中,弃用了for i;param;param{}格式的循环语句,提供给开发者使用的循环语句主要有3种。


1.for in语句


for in语句多用于快速遍历字典,示例如下:


let interestingNumbers = [

   "Prime": [2, 3, 5, 7, 11, 13],

   "Fibonacci": [1, 1, 2, 3, 5, 8],

   "Square": [1, 4, 9, 16, 25],

]

var largest = 0

for (kind, numbers) in interestingNumbers {

   for number in numbers {

   //找出最大值

       if number > largest {

           largest = number

       }

   }

}

print(largest)

在for in循环中可以使用一个索引来指定循环次数,通过这种方式可以实现有序的遍历操作,示例如下:


for i in 0..<10 {

   print(i)

}

2.while语句


while语句用于条件循环,直到不再满足某个条件为止,示例如下:


var n = 2

while n < 100 {

   n = n * 2

}

print(n)

3.repeat {}while语句


repeat{}while语句与C语言中的do{}while作用相同,保证至少循环一次。示例如下:


var m = 2

repeat {

   m = m * 2

} while m < 100

print(m)

目录
相关文章
|
8月前
|
存储 Swift
在Swift编程语言中,浮点数类型
在Swift编程语言中,浮点数类型
95 6
|
8月前
|
存储 Swift iOS开发
在Swift编程语言中,集合类型`Set`
在Swift编程语言中,集合类型`Set`
64 2
|
8月前
|
Swift
在Swift编程语言中,整数类型
在Swift编程语言中,整数类型
99 1
|
存储 Swift C++
41 Swift不透明类型
Swift不透明类型
55 0
|
2月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
33 2
|
2月前
|
Swift 索引 容器
Swift 泛型-扩展泛型类型
Swift 泛型-扩展泛型类型
35 2
|
2月前
|
Swift 索引
Swift 泛型-类型约束
Swift 泛型-类型约束
31 1
|
2月前
|
安全 Swift iOS开发
Swift 可选(Optionals)类型
10月更文挑战第24天
39 2
|
8月前
|
存储 安全 Swift
【Swift开发专栏】Swift中的集合类型:数组、字典与集合
【4月更文挑战第30天】本文探讨Swift的三种内置集合类型:数组、字典和集合。数组是有序元素集合,支持动态大小调整和类型安全;字典是无序键值对,适用于快速查找;集合是无序不重复元素集合,适合检查元素存在性和集合运算。理解这些特性和用法能提升Swift编程效率。
75 1
|
8月前
|
安全 Swift
【Swift开发专栏】Swift中的可选类型与解包
【4月更文挑战第30天】Swift的可选类型(Optional)用于表示变量可能无值,如用户未填写表单或空服务器数据。可选类型用问号(?)标记,状态可为包含值或nil。解包包括强制解包(!,可能触发运行时错误)、可选绑定(在if/while中安全解包)和隐式解包(声明时带!,使用时不需显式解包)。高级用法包括可选链式调用、空合并操作符(??)和可选类型比较。理解并恰当使用这些概念能提升代码的健壮性和安全性。
76 1