断言

可选能够让你推断值是否存在,你能够在代码中优雅地处理值缺失的情况。然而,在某些情况下,假设值缺失或者值并不满足特定的条件,你的代码可能并不须要继续执行。这时。你能够在你的代码中触发一个断言(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值。

请參考附属脚本和函数。

注意:

断言可能导致你的应用终止执行,所以你应当细致设计你的代码来让非法条件不会出现。然而,在你的应用公布之前,有时候非法条件可能出现,这时使用断言能够高速发现问题。

Swift编程语言学习1.7——断言的更多相关文章

  1. Swift编程语言学习9—— 存储属性和计算属性

    属性将值跟特定的类.结构或枚举关联.存储属性存储常量或变量作为实例的一部分,计算属性计算(而不是存储)一个值.计算属性能够用于类.结构体和枚举里,存储属性仅仅能用于类和结构体. 存储属性和计算属性通经 ...

  2. Swift 编程语言学习0.1——Swift简单介绍

    有的时候,认为看英文文档有些费时,看中文文档怕翻译不准,有些地方确实不须要抠字眼.当有些地方假设翻译不精准会产生歧义,所以用这样对比的方式.顺便学习一下Swift. Swift is a new pr ...

  3. Swift编程语言学习6—— 闭包

    闭包是自包括的函数代码块,能够在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)以及其它一些编程语言中的 lambdas 函数比較类似.   闭 ...

  4. Swift编程语言学习4.3—— 控制语句

    控制传递语句(Control Transfer Statements) 控制转移语句改变你代码的运行顺序,通过它你能够实现代码的跳转.Swift有四种控制转移语句. continue break fa ...

  5. Swift编程语言学习2.1——基础运营商(在)

    操作员正在检查,更改.归并值特殊符号或短语.例如,加+这两个数字相加(例如let i = 1 + 2). 算如更复杂的逻辑和操作的实施&&(例如if enteredDoorCode & ...

  6. Swift编程语言学习11—— 枚举全局变量、局部变量与类型属性

    全局变量和局部变量 计算属性和属性监视器所描写叙述的模式也能够用于全局变量和局部变量,全局变量是在函数.方法.闭包或不论什么类型之外定义的变量,局部变量是在函数.方法或闭包内部定义的变量. 前面章节提 ...

  7. Swift编程语言学习1.4——数值型字面量、数值类型转换

    数值型字面量 整数字面量能够被写作: 一个十进制数,没有前缀 一个二进制数,前缀是0b 一个八进制数,前缀是0o 一个十六进制数,前缀是0x 以下的全部整数字面量的十进制值都是17: let deci ...

  8. Swift编程语言学习3.1排列

    Swift 语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储同样类型的数据.字典尽管无序存储同样类型数据值可是须要由独有的标识符引用和寻址(就是键值对). Swift 语言里的数 ...

  9. Swift编程语言学习1.3——类型安全和投机型

    Swift 是类型安全(type safe )语言.类型安全的语言可以让你清楚地知道代码被处理值类型.假设你需要一个代码String.你绝对不能进去一个不小心传球Int. 因为 Swift 它是类型安 ...

随机推荐

  1. Linux学习笔记03—初识Linux

    命令介绍 忘记root密码的处理方法 系统安装盘的救援模式的使用 一.命令介绍 1.LS命令 ls 查看当前目录下的文件 Ls –l 等同于ll 查看目录的详细信息 Ls –a 查看当前目录下的所有文 ...

  2. AspNetPager 控件使用

    使用方法: 1.添加对AspNetPager.dll的引用 2.在页面上拖放控件 3. <%@ Register assembly="AspNetPager" namespa ...

  3. lua中的pairs和ipairs差别

    pairs Returns three values: the next function, the table t, and nil, so that the construction for k, ...

  4. STM32 GPIO fast data transfer with DMA

    AN2548 -- 使用 STM32F101xx 和 STM32F103xx 的 DMA 控制器 DMA控制器 DMA是AMBA的先进高性能总线(AHB)上的设备,它有2个AHB端口: 一个是从端口, ...

  5. Execution Plan 执行计划介绍

    后面的练习中需要下载 Demo 数据库, 有很多不同的版本, 可以根据个人需要下载.  下载地址 -http://msftdbprodsamples.codeplex.com/ 1. 什么是执行计划 ...

  6. 【Go命令教程】6. go doc 与 godoc

    go doc 命令可以打印附于Go语言程序 实体 上的文档.我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的. 插播:所谓 Go语言的 程序实体,是指变量.常量.函数.结构体以及接 ...

  7. solaris 软件包地址

      1. http://www.opencsw.org/ 在Solaris 10下 1.安装pkgutil pkgadd -d http://get.opencsw.org/now 2.查询有那些PK ...

  8. 使用position:relative制作下边框下的小三角

    在制作tab选项卡的时候,有时会有下边框,且下边框下另一个头向下的小三角,这全然能够用css来实现,而不必使用背景图片. 由于使用背景图片时会有一个问题,选项卡内容字数不同.导致使用背景图片时无法控制 ...

  9. Why I don’t read books

    http://dougmccune.com/blog/2007/03/23/why-i-dont-read-books/ I’ve never read a programming book. I r ...

  10. ProFTPd Local pr_ctrls_connect Vulnerability - ftpdctl 漏洞及攻击代码分析

    攻击代码网址:http://www.exploit-db.com/exploits/394/ 1.执行环境: 1.ProFTPD 1.3.0/1.3.0a 2.编译ProFTPD时.--enable- ...