一、基础部分
1>常量、变量声明
常量:let propertyName : type = value 变量:var propertyName : type = value
2>数据类型
基本数据类型:
整型(Int)、浮点型(Double、Float)、字符串类型(String)、Bool型(true、false)
集合类型:
数组(Array)、字典(Dictionary)、集合(Set)
3>控制流
循环语句:for-in 循环、while 循环
条件语句:if-else语句、switch-case语句、guard语句
控制转移语句:continue、fallthrough、return、throw
4>函数
func functionName(参数标签,参数1:类型...)->返回值类型{}
5>闭包
{(parameters)->returnType in
statements
}
尾随闭包:
func someFunctionThatTakesAClosure(closure: () -> Void) {
// 函数体部分
}
// 以下是不使用尾随闭包进行函数调用
someFunctionThatTakesAClosure(closure: {
// 闭包主体部分
})
// 以下是使用尾随闭包进行函数调用
someFunctionThatTakesAClosure() {
// 闭包主体部分
}
实例:
let strings = numbers.map {
(number) -> String in
var number = number
var output = ""
repeat {
output = digitNames[number % 10]! + output
number /= 10
} while number > 0
return output
}
6>枚举
enum someEnumeration{
case xxx
case xxxx
....
}
7>类和结构体
class someClass{statement}
struct someStruct{statement}
类和结构体的对比
共同之处:
定义属性用于存储值
定义方法用于提供功能
定义下标操作使得可以通过下标语法来访问实例所包含的值
定义构造器用于生成初始化值
通过扩展以增加默认实现的功能
实现协议以提供某种标准功能
与结构体相比,类还有如下的附加功能:
继承允许一个类继承另一个类的特征
类型转换允许在运行时检查和解释一个类实例的类型
析构器允许一个类实例释放任何其所被分配的资源
引用计数允许对一个类的多次引用
8>构造器
init(){}
自定义构造器
自定义构造过程时,可以在定义中提供构造参数,指定所需值的类型和名字。构造参数的功能和语法跟函数和方法的参数相同。
默认构造器
如果结构体或类的所有属性都有默认值,同时没有自定义的构造器,那么 Swift 会给这些结构体或类提供一个默认构造器(default initializers)。这个默认构造器将简单地创建一个所有属性值都设置为默认值的实例。
9>析构器
deinit{}
每个类最多只能有一个析构器,而且析构器不带任何参数。析构器是在实例释放发生前被自动调用。你不能主动调用析构器。
10>扩展
Swift 中的扩展可以:
添加计算型属性和计算型类型属性
定义实例方法和类型方法
提供新的构造器
定义下标
定义和使用新的嵌套类型
使一个已有类型符合某个协议
extension someType{}
11>协议
协议 定义了一个蓝图,规定了用来实现某一特定任务或者功能的方法、属性,以及其他需要的东西。类、结构体或枚举都可以遵循协议,并为协议定义的这些要求提供具体实现。某个类型能够满足某个协议的要求,就可以说该类型遵循这个协议。
protocol someProtocol{statement}
12>委托(代理)模式
委托是一种设计模式,它允许类或结构体将一些需要它们负责的功能委托给其他类型的实例。委托模式的实现很简单:定义协议来封装那些需要被委托的功能,这样就能确保遵循协议的类型能提供这些功能。委托模式可以用来响应特定的动作,或者接收外部数据源提供的数据,而无需关心外部数据源的类型。
13>泛型函数
泛型函数可以适用于任何类型
实例:
fun swapTwoValues<T>(_ a: inout T, _ b: inout T) {
let temporaryA = a
a = b
b = temporaryA
}