断言
可选能够让你推断值是否存在, 你能够在代码中优雅地处理值缺失的情况. 然而, 在某些情况下, 假设值缺失或者值并不满足特定的条件, 你的代码可能并不须要继续执行. 这时. 你能够在你的代码中触发一个断言 (assertion) 来结束代码执行并通过调试来找到值缺失的原因.
使用断言进行调试
断言会在执行时推断一个逻辑条件是否为 true. 从字面意思来说, 断言 "断言" 一个条件是否为真. 你能够使用断言来保证在执行其它代码之前, 某些重要的条件已经被满足. 假设条件推断为 true, 代码执行会继续进行; 假设条件推断为 false. 代码执行停止. 你的应用被终止.
假设你的代码在调试环境下触发了一个断言, 比方你在 Xcode 中构建并执行一个应用, 你能够清楚地看到不合法的状态发生在哪里并检查断言被触发时你的应用的状态. 此外, 断言同意你附加一条调试信息.
你能够使用全局 assert 函数来写一个断言.
向 assert 函数传入一个结果为 true 或者 false 的表达式以及一条信息, 当表达式为 false 的时候这条信息会被显示:
- let age = -3
- assert(age>= 0, "A person's agecannot be less than zero")
- // 由于 age <0. 所以断言会触发
在这个样例中, 仅仅有 age>= 0 为 true 的时候代码执行才会继续, 也就是说, 当 age 的值非负的时候. 假设 age 的值是负数, 就像代码中那样, age>= 0 为 false, 断言被触发, 结束应用.
断言信息不能使用字符串插值.
断言信息能够省略. 就像这样:
assert(age>= 0)
何时使用断言
当条件可能为假时使用断言, 可是终于一定要保证条件为真, 这样你的代码才干继续执行.
断言的适用情景:
整数的附属脚本索引被传入一个自己定义附属脚本实现. 可是下标索引值可能太小或者太大.
须要给函数传入一个值. 可是非法的值可能导致函数不能正常执行.
一个可选值如今是 nil. 可是后面的代码执行须要一个非 nil 值.
请參考附属脚本和函数.
注意:
断言可能导致你的应用终止执行, 所以你应当细致设计你的代码来让非法条件不会出现. 然而, 在你的应用公布之前, 有时候非法条件可能出现, 这时使用断言能够高速发现问题.
来源: http://www.bubuko.com/infodetail-2568047.html