一、基本语法

1.注释

与C语言相同,但Swift 的多行注释可以嵌套在其他多行注释内部。

405cb39961e54784bf552c33c7c9cc50.png

 2.分号

Swift不像C语言一样频繁地使用分号,只有在同一行书写多条语句时,必须用分号隔开,不要求在每行结尾加分号。

3.关键字

3.1数据类型:

class: 定义一个类
enum: 定义一个枚举
struct: 定义一个结构体
protocol: 定义一个协议
typealias: 定义一个类型别名
var: 定义一个变量
let: 定义一个常量
func: 定义一个函数

3.2流程控制:

if: 条件语句
else: 条件语句的另一部分
switch: 多选择语句
case: switch 语句中的一个分支
for: for-loop,循环语句
in: for-loop 中用于区间或集合的遍历
while: while-loop,循环语句
repeat: do-while-loop 的开始部分
do: do-while 或 do-catch 的开始部分
break: 跳出循环或 switch 语句
continue: 跳过当前循环的其余部分,进行下一次循环

3.3 访问控制

public: 可以被任何地方访问
internal: 只能在当前模块内访问
fileprivate: 只能在当前文件内访问
private: 只能在当前声明里和扩展中访问

3.4 功能修饰词

static: 静态方法或属性
class: 类方法或属性(可以被子类重写的 static)
dynamic: 允许动态派发
final: 阻止子类重写
mutating: 允许值类型的方法修改其所属实例
nonmutating: 标记方法在改变值类型属性时不会改变它的状态
lazy: 延迟加载属性直到第一次被调用
optional: 表示协议中的方法或属性是可选的

3.5 错误处理

throw: 抛出一个错误
throws: 标记一个函数可能抛出错误
rethrows: 标记一个函数为仅当闭包参数抛出错误时才抛出错误
try: 调用可能抛出错误的函数
catch: 捕获并处理异常

3.6 泛型和类型

associatedtype: 定义一个协议的关联类型
where: 指定类型约束条件
Any: 表示任意类型
Self: 表示类型本身

引入

在Swift 中可以使用"\()"以引入其他量,也可以用"+"号进行输出语句的拼接。

 

二、数据类型

1.整型数据

Swift语言中的整型数据分为有符号整型数据与无符号整型数据。有无符号通俗来理解即为分正负符号与不分正负符号。

对于无符号整型,Swift中提供了5种类型4种储存空间的数据类型,4种储存空间分别占用内存8位、16位、32位、64位。

40f22e1a1eed4554a5063187138ec1ca.png

 有符号整型数据与无符号整型数据十分类似,只是其首位二进制位位符号位,不纳入数值计算。

3b15e9216fc24cdb9602d50c7e5b23e6.png

 

2.浮点型数据

浮点型数据用来表示一些小数,浮点型数据分为单精度浮点型和双精度浮点型,分别用 Float 与 Double 表示。

e347d96e154a415a9e370a9f202a2d90.png

 Swift语言支持使用科学计数法来表示数字,在十进制中,使用e来表示10的n次方;在十六进制中,使用p来表示2的n次方。

23e7baddf2864dab805d8bd08233f175.png

 3.布尔型数据

布尔型数据很多时候也叫做逻辑类型,Swift语言与Objective-C语言不同,在Swift语言中的Bool类型十分严格,只有true和false两种值,分别表示真和假。在Swift语言的条件语句以及需要逻辑判断的语句中,所使用的条件表达式的值也必须为Bool类型。
创建真与假的Bool类型。

538499d7c592449a991fe75b8ff3c161.png

 4.两种特殊数据类型

4.1元组

swift提供了元组:多个值组合成一个复合值。

元组内的值可以是任意类型,并不要求是相同类型。有了元组,函数的返回值就可以返回多个不同类型的值。

3112f8d285844908a4d95b672aeab7ae.png

 注意:元组虽然使用起来十分方便,但是其只适用于简单数据的组合,对于结构复杂的数据,要采用结构体或者类来实现。

4.2可选值类型

可选值类型(Optional类型)是Swift语言特有的一种类型。

Optional 实际上就是一个枚举。可选值是Swift中重要的基础类型之一,所以有更加简洁的语法来表示。例如:Optional<Int>可以写成Int?因为可选值遵守ExpressibleByNilLiteral协议,所以可以用 nil 代替.none。
Optional类型实例解包操作

def3b51a82ff4515b447ee3acb741cfa.png

 在使用“!”进行Optional值的解包操作时,必须保证要解包的值不为nil,否则程序运行会出错。可以在拆包前使用if语句进行安全判断,例子如下:

18ad2c0548de4c68bc5cfbd53d4b9386.png

三.常量和变量

swift用let定义常量,用var定义变量。对于数据类型则swift自行推断(类型推倒在C++中相当于auto这个类型占位符一样)。常量在设定后,将不能再更改它的值,变量则可以。

常量和变量名可以包含几乎所有的字符,包括 Unicode 字符

注意:
在实际项目开发中,应该先定义为let类型,如果需要修改时,再修改类型为var
let指的是指向的地址不可修改,但是该对象内容是可修改的(常量不可修改)

四、可选类型

为了让程序更安全!

为了保证str不是nil,在赋值时确定一下。swift提供了可选类型,来处理可能缺失的情况。注意可选类型是一个类型。

b46fe089f9004228830db4a9d60bf047.png

 构造器返回值可选值类型a2ec5fc77d464907a125e1cc8f82af96.png

使用if或者while可以进行判断是否有值。这个过程又叫做可选绑定

468d89b2dc8c4237a76dcf7558fb44aa.png

 注意:

解包符号为 !如果确定一个可选类型的值一定存在,那么我们使用 !进行解包来获取它的值,或者使用 Optional Binding 来处理。 

可以把“隐式解包可选类型”当成对每次使用的时候自动解包的可选类型。隐式解包不是每次使用的时候 在变量/常量后面加 !,而是直接在定义的时候加 !。

强制解包过程中一旦解包失败,就会引起崩溃,安全的解包行为应该是通过if let 或者guard let,这种被称为可选绑

五、字面量

所谓字面量,就是指像特定的数字,字符串或者是布尔值这样,能够直接了当地指出自己的类型并为变量进行赋值的值。

5.1字符串型字面量

字符串型字面量由被包在双引号中的一串字符组成,形式如下:

d225898175674201b75d435f389edae4.png

字符串型字面量中不能包含未转义的双引号 (")、未转义的反斜线(\)、回车符或换行符。

8faef77c0c5845f5afc1a91497a2f27f.jpg

六、运算符

6.1赋值运算符

赋值运算符应该是在编程中出现频率最高的运算符之一,在对任何量值进行赋值时,都需要使用到赋值运算符“=”。与C语言相同,“=”并不是相等运算符,相等运算符为“==”。

55ae43f6ed0f41c581e6c8cdb5848902.png

 6.2基本算术运算符

基本算数运算符用于进行一些基本的数学运算,例如加、减、乘、除等。Swift语言从2.2版本之后,删除了自增运算符“++”和自减运算符“- -”,目前版本的Swift语言中不可以使用这两个运算符。

ce32c96454f2467fa9f2d8d643425a48.png

 6.3比较运算符

Swit中的比较运算符用于两个操作数之间的比较运算,其会返回一个Bool类型的逻辑值。基本的比较运算符有:等于比较运算符“—”、小于比较运算符“<”、大于比较运算符“>”、不等于比较运算符“上=”、小于等于比较运算符“<”以及大于等于比较运算符“>-”。

7cffd8050e7e4f3198d23e097787be37.png

 6.4两种特殊的运算符

6.4.1空合运算符

如果 a 包含一个值就进行解包,否则就返回一个默认值 b

576709c227c540e88e2e8e2afa40bc7d.png

 6.4.2区间运算符

Swift 提供了几种方便表达一个区间的值的“区间运算符”。
闭区间运算符(a...b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b。
半开区间运算符(a..<b)定义一个从 a 到 b 但不包括 b 的区间。
单侧区间运算符(a.../...b)可以表达往一侧无限延伸的区间

七、条件语句

在 Swift 中,条件语句用于根据特定条件执行不同的代码块。Swift 提供了 if、guard、switch 等条件语句来实现不同的条件逻辑。

7.1if语句

if 语句用于根据条件执行代码块。

8483c61e27a84b578676ba7067741109.png

 7.2guard语句

guard 语句用于在条件不满足时退出当前作用域。通常与 else 配合使用。

0765fa679238440cb856562c1baa0d45.png

 7.3switch语句

switch 语句用于根据不同的情况执行对应的代码块。

ccd4bb43dfab4fda84e0b87f39a1bdcf.png

 八、Xcode的使用

Creat New Project(新项目)或点击右栏(从文件夹打开旧项目)

6f1aaee7407746c6afd7303cc56e0ad1.png

 最上方栏目选择 macOS

7eeede4794c7431699a1c83a7f55e096.png

 在 Application 中选择 Command Line Tool

e2c08a3967304bd8a7619fcbad648188.png

 命名文件以及选择语言类型(Swift、Objective-C、C++、C)

9005a0f190f54822b0d98f35decbe7d6.png

 选择新建文件夹或者要放入的文件夹

输入代码

左上角三角符号运行

e7ba6bcea50047489c8a1017d5c0d9f1.png

 

 

更多推荐