美文网首页swift基础
swift基础—断言(Assertion)

swift基础—断言(Assertion)

作者: 莽原奔马668 | 来源:发表于2017-04-18 17:16 被阅读19次

可选类型可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况。然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能没办法继续执行。这时,你可以在你的代码中触发一个* 断言(assertion) *来结束代码运行并通过调试来找到值缺失的原因。

使用断言进行调试####

断言会在运行时判断一个逻辑条件是否为* true *。从字面意思来说,断言“断言”一个条件是否为真。你可以使用断言来保证在运行其他代码之前,某些重要的条件已经被满足。如果条件判断为 true ,代码运行会继续进行;如果条件判断为 false ,代码执行结束,你的应用被终止。

如果你的代码在调试环境下触发了一个断言,比如你在 Xcode 中构建并运行一个应用,你可以清楚地看到不合法 的状态发生在哪里并检查断言被触发时你的应用的状态。此外,断言允许你附加一条调试信息。

你可以使用全局 assert(::file:line:) 函数来写一个断言。向这个函数传入一个结果为 true 或者 false 的表达式以及一条信息,当表达式的结果为 false 的时候这条信息会被显示:

let age = -3
assert(age >= 0, "A person's age cannot be less than zero") 
// 因为 age < 0,所以断言会触发

在这个例子中,只有 age >= 0true 的时候,即 age 的值非负的时候,代码才会继续执行。如果 age 的值是负数,就像代码中那样, age >= 0false ,断言被触发,终止应用。

如果不需要断言信息,可以省略,就像这样:

 assert(age >= 0)

注意:
当代码使用优化编译的时候,断言将会被禁用,例如在 Xcode 中,使用默认的 target Release 配置选项来 build 时,断言会被禁用。

何时使用断言####

当条件可能为假时使用断言,但是最终一定要保证条件为真,这样你的代码才能继续运行。断言的适用情景:

  • 整数类型的下标索引被传入一个自定义下标实现,但是下标索引值可能太小或者太大。
  • 需要给函数传入一个值,但是非法的值可能导致函数不能正常执行。
  • 一个可选值现在是* nil* ,但是后面的代码运行需要一个非 nil 值。

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

相关文章

  • swift基础—断言(Assertion)

    可选类型可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况。然而,在某些情况下,如果值缺失或者值并不满足...

  • java断言使用

    在c++中我们习惯用断言(Assertion),静态断言(Static Assertion)等对参数和环境做出判断...

  • 自学Swift之断言 assertion

    断言概念: 官方概念太无聊,并且冗余... 断言(assertion) 是一个全局函数 断言理解: 我理解的断言(...

  • TestNG断言

    TestNG中的Assertion,也是断言。断言是测试中最难写的部分。 Assert类(硬断言) 断言类是Ass...

  • jemeter断言

    一 响应断言 1.添加响应断言 2.设置响应断言 3.模式匹配规则 二 Size Assertion (字节大小断...

  • 【JMeter】JSON断言中的JSON Path

    【JSON Assertion】就是JMeter断言中的JSON断言。此组件允许对JSON文档执行验证。它在使用过...

  • SAML -- 安全断言标记语言

    一、简介 SAML:Security Assertion Markup Language安全断言标记语言标识化组织...

  • 单点登录 - SAML协议

    SAML 即安全断言标记语言,英文全称是 Security Assertion Markup Language。它...

  • TypeScript类型断言

    类型断言 类型断言(Type Assertion)可以用来手动指定一个值的类型。 语法 在 tsx 语法(Reac...

  • TypeScript入门基础(类型断言、内置对象)

    类型断言 类型断言(Type Assertion)可以用来手动指定一个值的类型。语法 <类型>值 或 值 as 类...

网友评论

    本文标题:swift基础—断言(Assertion)

    本文链接:https://www.haomeiwen.com/subject/cncqzttx.html