在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
iOS开发Swift篇—(四)运算符 一、运算符 1.Swift所支持的部分运算符有以下一些 赋值运算符:= 复合赋值运算符:+=、-= 算术运算符:+、-、*、/ 求余运算符:% 自增、自减运算符:++、-- 比较运算符:==、!=、>、<、>=、<= 逻辑运算符:&&、||、! 三目运算符:? : 范围运算符:..< 、... 溢出运算符:&+、&-、&*、&/、&%
2.赋值运算符 (1)1对1赋值 var a = 5 let b = 20
(2)N对N赋值(元组) let (x, y) = (1, 2) // x的值是1,y的值是2,并且都是常量
注意:跟C\OC不一样的是:Swift的赋值运算符没有返回值 if (x = y) { } // 上面的代码是错误的,因为x = y并没有返回具体的值
说明:这样的好处是防止误用 = 和 ==
3.算术运算符 简单使用 1 + 2 // 3 5 - 3 // 2 2 * 3 // 6 10.0 / 2.5 // 4.0 "http://" + "www.wendingding.cn" // "http://www.wendingding.cn"
4.求余运算符 %在Swift中叫“求余运算符”,也有语言叫做“模运算符” 9 % 4 // 1 -9 % 4 // -1 9 % -4 // 1 -9 % -4 // -1 提示:求余结果的正负跟%左边数值的正负一样
注意:跟C语言不一样的是,Swift的%支持浮点数的计算 8 % 2.5 // 0.5
5.Bool类型 Bool类型,也被称为逻辑类型(Logical),就2种取值 true:真 false:假
注意:在C语言中:0是假,非0就是真;而在Swift中没有这种概念 if语句的条件必须是Bool类型的值 (1)错误写法 if (10) { println("条件成立") }
(2)正确写法 if (true) { println("条件成立") }
6.三目运算符 比较运算符\逻辑运算符会返回Bool类型的值,取值有2种可能 true:真,6 > 5,(7 > 6) && (9 != 7) false:假,6 < 5,(7 >= 6) && (9 == 7)
三目运算符的条件必须是Bool类型的值 (1)错误写法 let a = 10 let c = a ? 100 : 200
(2)正确写法 let c = a != 0 ? 100 : 200 let c = false ? 100 : 200
7.范围运算符 范围运算符用来表示一个范围,有2种类型的范围运算符 闭合范围运算符:a...b,表示[a, b],包含a和b 半闭合范围运算符:a..<b,表示[a, b),包含a,不包含b
举例: // index的值从1~5
// index的值从1~4
8.溢出运算符 (1)简单说明 每种数据类型都有自己的取值范围,默认情况下,一旦赋了一个超出取值范围的数值,会产生编译或者运行时错误 注意:下面的写法是错误的 let x = UInt8.max let y = x + 1 第2行代码会在运行时报错(运行时错误)
提示:上面是运行时错误,下面的错误提示是编译时错误。
Swfit为整型计算提供了5个&开头的溢出运算符,能对超出取值范围的数值进行灵活处理 溢出加法 &+ 溢出减法 &- 溢出乘法 &* 溢出除法 &/ 溢出求余 &% (2)值的上溢 let x = UInt8.max let y = x &+ 1 第1行代码过后:x的值是 255(最大值) 第2行代码过后:y的值是 0(最小值) (3)值的下溢 let x = UInt8.min let y = x &- 1 第1行代码过后:x的值是 0(最小值) 第2行代码过后:y的值是 255(最大值)
有符号整数也有类似的溢出现象 let x = Int8.min let y = x &- 1 第1行代码过后:x的值是 -128(最小值) 第2行代码过后:y的值是 127(最大值)
(4)除零溢出 默认情况下,一个数除于0,或者对0求余数,编译器会直接报错 let x = 10 let y = x / 0 let z = x % 0 第2、3行代码:编译器都会报错
如果使用溢出运算符,就不会报错 let x = 10 let y = x &/ 0 let z = x &% 0 y和z的值最终都是0
二、断言 1.简单说明 断言是一种实时检测条件是否为true的方法 如果条件为true,那么代码继续执行 如果条件为false,就抛出错误信息,直接终止程序的运行
2.断言的用法 使用全局的assert函数 assert函数接收一个Bool表达式和一个断言失败时显示的消息 assert(index >= 0, "index必须大于0") 如果index大于等于0,就继续执行后面的代码 如果index小于0,就抛出错误信息(下面的黑色字),直接终止程序的运行 assertion failed: index必须大于0
assert(index >= 0) 可以省略错误信息,但不推荐,这样不利于调试
3.使用场景和注意 (1)下面的场景,可能用到断言 检测数组的索引:不能太小或者太大,否则造成数组越界 检测传递给函数的参数:如果是无效参数,将不能在该函数中使用
(2)断言的使用注意 断言会导致程序运行的中止,如果不管条件是否成立,都要继续往下执行代码,那就不能用断言 断言可以保证错误在开发过程中会被及时发现,但发布的应用里最好不要使用 如果一个程序用着用着就突然崩溃闪退,会严重影响用户体验 |
请发表评论