Debugging with Assertions (断言调试)
断言是一个假设逻辑条件为真的运行时检查机制.在执行任意代码之前,可以使用断言来确认一个基本的条件情况.如果条件判断为真,代码将继续执行,如果条件为假,代码将会结束,应 用程序也会退出.
如果在调试环境中,运行的代码触发了一个断言(比如你在Xcode中编译并运行一个应用),你可以明确的看到错误的状态发生在哪里,并且查询应用程序在这个时刻的状态.断言也可以让 你使用适合的调测显示信息作为断言信息.
可以写一个全局函数assert来触发断言,传递给函数assert一个true或false的表达式,如果是false,将会显示一段信息:
let age = -3
assert(age >= 0, "A person‘s age cannot be less than zero")
// this causes the assertion to trigger, because age is not >= 0
这个代码例子中,只有当 age >= 0成立的时候,代码才会继续执行下去,也就是说,age的值是非负数.如果age的值是负数,那么age>=0条件不成立,断言被触发,程序结束.
断言信息不能插入字符串,如果不需要信息,可以像下面的代码一样,忽略它:
assert(age >= 0)
When to Use Assertions (什么时机使用断言)
如果代码的执行必须在某个条件为true时才能继续,那么条件在任何有潜在的false情况下,可以使用断言.推荐的断言检查情况包括:
-
- 传递给索引的整数下标,这个下标可能太小或太大.
- 传递给函数的值,不合法的值可能无法让函数完成相应的任务.
- 当前值为nil 的可选类型值,后续代码执行可能会给可选类型赋予一个非nil的值.
注意点:
断言会停止你的应用并结束,但断言不是为了在代码设计中防止出现不希望的非法条件.无论怎样,代码开发阶段中,总是可能会有非法条件的地方,断言是一种有效的在这种情况下起到 高亮的提醒作用(在你的应该发布以前).
Basic Operators (基本操作符)
操作符是特定的符号,可以用来检查,改变或者组合值.例如,加法操作符(+)把两个数字加在一起(例如 let i = 1+2).复杂的也有逻辑与(AND)操作符&&(例如if enteredDoorCode && passedRetinaScan)和自增操作符 ++i,它是给i值增1的缩写.
Swift支持绝大部分标准C的操作符,并提升了常用代码的避免错误的能力.赋值操作符(=)没有返回值,是为了防止它与相等操作符(==)被混用.数学操作符(+,-,*,/,%等等)会检测值的 溢出,为了避免不希望的结果(当数值大小超出指定类型的储存范围).
与C语言不同的是,Swift中,取模运算(%)可以是浮点值.Swift中也提供了范围操作符(例如a..b和a...b)表示一个范围,这在C语言中是找不到的.
本章描述Swift的通用操作符,高级操作符在 Advanced Operators 中讲述:怎样自定义操作符和在自己定义类型上使用标准操作符.
Terminology (术语)
单目操作符,双目操作符,三目操作符:
-
- 单目操作符只操作一个目标,(例如 -a),前缀单目操作符在操作目标前出现(比如!b),后缀单目操作符在操作目标后出现(比如i++).
- 双目操作符操作两个目标(例如2+3).
- 三目操作符操作三个目标,与C语言一样,Swift中只有一个三目操作符,三目条件操作符( a? b:c )
操作符操作的值,叫做运算元(或操作数),在表达式1+2中,加号+是一个双目操作符,它的两个运算元是数值1和数值2.
/********************待续......************************/
Welcome to Swift (苹果官方Swift文档初译与注解十四)---90~93页(第二章),布布扣,bubuko.com