做外贸做的很好的网站,网站方案讲解技巧,西安的做网站的公司,网站框架模板一、可选类型
swift的可选类型用于处理变量可能为nil(空值)即缺失的情况。在swift中#xff0c;可选类型通过在原始类型后面添加问号#xff08;#xff1f;#xff09;来声明#xff08;注意#xff1a;类型与#xff1f;之间没有空格#xff09;。例如以下的这两个声…一、可选类型
swift的可选类型用于处理变量可能为nil(空值)即缺失的情况。在swift中可选类型通过在原始类型后面添加问号来声明注意类型与之间没有空格。例如以下的这两个声明是相同的 这两种情况都可以声明变量为可选整数类型变量.同时显示声明也可以如 1.可选类型的枚举
swift的可选类型实际上是一个枚举枚举是一种用于定义一组相关值的类型它允许在一个类型安全的方式下定义一组相关的值并且可以在代码中使用这些值枚举可以包含不同的数据类型类型包含none(没有值)和some(包含一个值.
2.可选类型的使用
2.1范围给定
声明可选变量的时候不仅要确保使用使用同时也要使用问好给操作符合适的范围。
例如我们在声明整数数组的时候如果下成下面的第一个形式就会报错正确的写法应该是第二个形式. 应写成 (Int[])? 写成 Int[]? 会报错。
2.2初始值
当声明应该可选变量或者可选属性类、结构体和枚举的属性的时候没有提供初始值那么它的值默认为nil(空值).
2.3布尔环境中应用
在布尔环境中如果可选类型的值为Optional.some(包含一个值那么这个可选类型等于true,否则为false.
2.4访问
可选类型可以用后缀操作符感叹号来访问这个值。
3可选类型与nil的比较
可选类型与Objective-C中指针nil的值表示指针不再指向任何有效的对象很相似但nil只对类class而可选类型对所有类型都可以使用且更加安全。
4.隐藏式可选类型自动解析
当确定一个可选类型总是包含值时可以使用隐藏式解包可选类型将放在类型的末尾表示在使用该值的时候可以自动解包如图下面的例子 5.强制解包
当确定可选类型确实包含值以后可以使用用于表示已知可选有值可以使用来强制解包可选类型注意如果可选类型为nil空值强制解包会导致允许时崩溃。 6.可选绑定
使用可选绑定可以判断可选是包含值如果包含就把值赋值给一个临时常量或变量。可选绑定可以在if和while语句中来对可选类型的值进行判断并把值赋值给一个常量或变量。如下有可选绑定的实例
运行的结果为 二、字面量
定义表示特定类型的常量值的语法表示形式允许直接指定常量的值而不是通过变量或表达式进行计算。
1.整型面量
整型字面量可以是一个十进制、二进制0b开头、八进制0o开头或十六进制0x开头常量。 2.浮点型字面量
浮点型字面量有整数部分小数点小数部分及指数部分。
浮点型字面量可以是Float或Double类型。swift默认的浮点型字面量类型是Double。如果要使用Float类型的浮点数可以在字面量后面加F或者使用显示类型声明。浮点型字面量默认用十进制表示要使用十六进制表示要加前缀0x。
浮点型字面量十进制由十进制数字后跟小数部分或指数部分组成。
2.1.小数表示法 2.2.科学计数法表示法 2.3.十六进制表示法
十六进制浮点型字面量由0x后跟可选的十六进制小数部分以及十六进制指数部分组成。十六进制小数部分由小数点后跟十六进制数字串组成。指数部分由大写或小写字母p为前缀后跟十进制数字串e之前的数量乘以10的几次方组成如以下的例子
0xFp2 表示 15 ⨉ 2^2也就是 60同样0xFp-2 表示 15 ⨉ 2^-2也就是 3.75。
2.4.可读性
浮点型字面量允许使用下划线和在数字前加0来增强数字的可读性不会影响字面量的值。
3.字符串型字面量
字符串的字面量用双引号括起来。
注意字符串型字面量不能包含未转义的双引号“未转义的反斜线\、回车符或转行符。 4.布尔字面量
布尔型字面量的默认类型是Bool布尔值字面量有三个值true真false假nil没有值。 5.数组字面量 6.字典字面量 三、运算符
1.算术运算符
算术运算符包括加号、减号-、乘号*、除号/、求余%
注意swift语言的最新版本,中自增、自减--运算符已被移除。
例子编写包含以上运算符的计算器。
2.比较运算符
比较运算符包括等于、不等于、大于、小于、大于等于、小于等于
例子
运行的结果为 3.逻辑运算符
逻辑运算符包括与、或||、非
例子 运行的结果为 4.位运算符
位运算符用来对二进制进行操作~取反与,|或,^异或,(左移)右移。下面我以下面的例子来一一说明。 其中A为2转化为2进制就为10
B为3转化为2进制为11
运行的结果为 1.与
ab对a,b每一位二进制进行与操作只有两个位都为1时候结果才为1否则为0.
2.或
a|b:对a,b每一位进行或操作只要两位中至少有一个1结果就为1
3.异或
a^b:对a,b每一位进行异或操作当两个位不相同结果为1
4.取反
~a:对a,每一位进行取反操作即对a的每一位都取反
5.左移
ab将a的所有位左移b位右侧空缺的位用0填充。
ab:将a的所有位右移b位左侧空缺的位用0填充。
5.赋值运算符 例子 运行的结果为 6.区间运算符
1.闭区间运算符
闭区间运算符a...bab定义一个包含从a到b包括a和b的所有值的区间。常用在for in循环中
2.半开区间运算符
半开区间a..b定义一个从a到b但不包含b的区间注意包括a。
7.其他运算符
1.一元运算符
一元运算符对单一操作对象操作一元运算符分前置运算符需要紧跟在操作对象之前)和后置运算符(需要紧跟在操作对象之后)区分在C语言中没有c!的语法在swift中用在Optional类型取值如一元减-3、一元加2。
2.二元运算符
二元运算符操作两个操作对象而且放置在对象之间。如2 3
3.三元运算符
和C语言一样A?BCA为真执行BA为假执行C
8.运算符优先级
不同优先级从高到低相同优先级大多数按从左到右只有三个优先级从右到左单目运算符一元运算符、条件运算符、赋值运算符。
基本的优先级
指针最优单目运算优于双目运算。如正负号。先乘除模后加减。先算术运算后移位运算最后位运算。请特别注意1 3 2 7 等价于 (1 (3 2))7逻辑运算最后计算 四、条件语句
1.运算符
a?b:c
表示a为真执行ba为假执行c。
2.if语句
组成由一个布尔表达式和一个或多个执行语句组成。
语法if a{
//如果布尔表达式为真将执行语句
}
例子
运行结果为 3.if...else语句
语法if a { /* 如果布尔表达式为真将执行的语句 */ } else { /* 如果布尔表达式为假将执行的语句 */ }
例子
运行的结果为 4.if...else if...else语句
一个if语句后可以跟一个可选的else if...else语句。但使用的时候注意
if 语句后可以有 0 个或 1 个 else但是如果 有 else if 语句else 语句需要在 else if 语句之后。if 语句后可以有 0 个或多个 else if 语句else if 语句必须在 else 语句出现之前。一旦 if 语句执行成功其他的 else if 或 else 语句都不会执行。
语法
if a1 { /* 如果a1 表达式为 true 则执行该语句 */ } else if a2 { /* 如果 a2 表达式为 true 则执行该语句 */ } else if a3 { /* 如果 a3 表达式为 true 则执行该语句 */ } else { /* 如果以上所有条件表达式都不为 true 则执行该语句 */ } 例子
运行的结果为 5.内嵌if语句
在if或else if语句内使用另一个if或else if语句
语法
if a1 { /* 当 a1 表达式 true 时执行 */ if a2 { /* 当 a2 表达式 true 时执行 */ } }
例子 运行的结果为 6.switch语句
语法
switch expression { case expression1 : statement(s) fallthrough /* 可选 */ case expression2, expression3 : statement(s) fallthrough /* 可选 */ default : /* 可选 */ statement(s); } 注意一般在switch语句中不使用fallthrough语句用于继续执行下一个 case。在大多数语言如C语言中switch语句块中case之后的语句会顺序运行所有想要终止运行要在case后紧跟break但对于swift语言中默认是不会执行下去的switch也会终止如果想要case后面语句按照顺序运行则需要用fallthrough)
例子
有fallthrough: 运行的结果为 没有fallthrough: 运行的结果为