在Swift 2.0以后增长defer、guard、repeat、catch、rethrows、hrow、throws和try关键字,其中repeat关键字替代do - while循环中的do,即中repeat - while循环。而do关键字用于错误处理。catch、rethrows、throw、throws和try是错误处理关键字。数据库
错误处理是Swift 2.0以后增长新内容。安全
defer数据结构
guard函数
repeatspa
catch.net
rethrowsci
hrow开发
throws字符串
tryget
======================================================
标识符就是给变量、常量、方法、函数、枚举、结构体、类、协议等由开发人员指定的名字。
其实,构成标识符的字母是有必定规范的,Swift中命名规则是:
区分大小写,Myname与myname是两个不一样的标识符;
标识符首字符能够如下划线(_)或者字母开始,但不能是数字;
标识符中其余字符能够是下划线(_)、字母或数字。
例如: userName、User_Name、_sys_val、身高等为合法的标识符,而2mail、room#和class为非法的标识符。
==================================================
什么是关键字呢?
关键字是相似于标识符的保留字符序列,由语言自己定义好的,不能挪做他用,除非用重音符号(`)将其括起来。
Swift语言常见的关键字有如下4种。
与声明有关的关键字:class、deinit、enum等。
与语句有关的关键字:break、case、continue等。
表达式和类型关键字:as、catch、dynamicType、false等。
在特定上下文中使用的关键字:associativity、convenience、dynamic等。
Swift中关键字是区分大小写的,因此class和Class是不一样的,那么Class不是Swift的关键字。
===============================================
在咱们开发过程当中啊何时定义关键字为var,仍是定义为let呢?
其实啊都能知足咱们的需求,那咱们到底应该如何选择?
例如:能够将圆周率π定义为let或var。
let π = 3.14159
var π = 3.14159
上面代码编译不会报错。可是从业务逻辑层面讲,π应该定义为常量(let)的,由于一方面常量(let)不能修改,另外在程序中使用常量(let)能够提升程序的可读性。
有人说:原则上优先使用let,它有不少好处,能够防止程序运行过程当中没必要要的修改、提升程序的可读性。特别是引用数据类型声明时候常常采用let声明,虽然在业务层面上并非一个常量,而是防止程序运行过程当中错误地修改它引用。
常量是标识符的前面加上关键字let。常量其值在使用过程当中不会发生变化的量,下面是声明常量:
let _Hello = "Hello"
注意哦常量只能在初始化的时候被赋值,若是再次给_Hello赋值,
好比: _Hello = "Hello, World"
程序会报错的
变量来了
变量是在标识符的前面加上关键字var,声明变量啦:
var scoreForStudent = 0.0
声明Double类型scoreForStudent变量,而且初始化为0.0。
若是在一个语句中声明和初始化了多个变量,那么全部的变量默认具备相同的数据类型(待验证):
var x = 10, y = 20
在多个变量的声明中,也能指定不一样的数据类型哦:
var x = 10, y = true
其中x为整型,y为布尔型。
==================================================
在Swift中,表达式有3种形式。
l 不指定数据类型
var a1 = 10
l 指定数据类型
var a1:Int = 10
l 使用分号
var a1:Int = 10; vara2:Int = 20
在Swift语言中,一条语句结束后能够不加分号也能够添加分号,可是有一种状况必需要用分号,那就是多条语句写在一行的时候,须要经过分号来区别语句。
例如:
var a1:Int = 10; vara2:Int = 20;
==================================================
+ 加 求和,还可用String类型,进行字符串链接操做
- 减 求差
* 乘 求积
/ 除 求商
% 取余 求余数
- 取反符号 取反运算
++ 自加一 先取值再加一,或先加一再取值
-- 自减一 先取值再减一,或先减一再取值
除了一些经常使用的运算符,还有一些其余的:
• 引用号(.):实例调用属性、方法等操做符。
• 问号(?):用来声明可选类型。
• 感叹号(!):对可选类型值进行强制拆封。
• 箭头(->):说明函数或方法返回值类型。
• 冒号运算符(:):用于字典集合分割“键值”对。
==================================================
在Swift中数据类型有那些呢?整型、浮点型、布尔型、字符、字符串这些类型是必定有的,其中集合、枚举、结构体、类也是Swift中的数据类型。元组是Swift中特有的。
其余那些类型咱们可能多少知道些或是据说过。元组是在Swift中有的,它是什么呢?
它是一种数据结构,在数学中应用普遍。在计算机科学中,元组是关系数据库中的基本概念,元组表中的一条记录,每列就是一个字段。所以在二维表里,元组也称为记录。
如今使用Swift语法表示Student元组就是:
第一种写法
("1001", "张三", 30, 90)
第二种写法
(id:"1001", name:"张三", english_score:30, chinese_score:90)
==================================================
在C、Objective-C和Java等其余语言中,整型之间有两种转换方法:
从小范围数到大范围数转换是自动的;
从大范围数到小范围数须要强制类型转换,有可能形成数据精度的丢失。
而在Swift中这两种方法是行不通的,须要经过一些函数进行显式地转换,代码以下:
let historyScore:UInt8 = 90
let englishScore:UInt16 = 130
let totalScore = historyScore + englishScore //错误
程序就会有编译错误,缘由是historyScore是UInt8类型,而englishScore是UInt16类型,它们之间不能转换。
两种转换方法:
一种是把UInt8的historyScore转换为UInt16类型。因为是从小范围数转换为大范围数,这种转换是安全的。
代码:
let totalScore = UInt16(historyScore) + englishScore //是正确的转换方法。
另一种是把UInt16的englishScore转换为UInt8类型。因为是从大范围数转换为小范围数,这种转换是不安全的,若是转换的数比较大可能会形成精度的丢失。
代码:
let totalScore = historyScore + UInt8(englishScore) //是正确的转换方法。
本例中englishScore的值是130,这个转换是成功的,若是把这个数修改成1300,虽然程序编译没有问题,可是会在控制台中输出异常信息。
整型与浮点型之间的转换
整型与浮点型之间的转换与整型之间的转换相似:
let historyScore:Float = 90.6
let englishScore:UInt16 = 130
let totalScore = historyScore + englishScore //错误
let totalScore = historyScore + Float(englishScore) //正确,安全
let totalScore = UInt16(historyScore) + englishScore //正确,小数被截掉
==================================================