美文网首页
7.1契约和边界

7.1契约和边界

作者: jarod_chan | 来源:发表于2015-12-20 16:14 被阅读39次

像商业合同(契约)一样,软件的契约是两个部分之间的协议。这个协议指定了权利和义务来规范一个部分到另外一个部分。
因此契约在两部分之间建立了一个边界。当一个值通过边界,契约监视系统会执行契约检查,确保遵守固定的契约。
为了达到这个目的,racket鼓励在模块边界使用契约。程序员可以在provide语句上添加契约,给导出值添加约束。

  #lang racket
  (provide (contract-out [amout positive?]}
  (define amount ...)

上面的模块对所有的调用者承诺amount值总是一个正数。每当一个调用者引用了amount值,契约监视器都会确认它是不是一个正数。
契约模块内建在racket语言里,但是如果你只是想使用racket/base,你需要使用require语句导入。

7.1.1违反契约

违反契约会发送一个错误。使用and/c可以写多个合同。

7.1.2测试模块和契约

我们可以使用子模块来测试契约。

7.1.3测试内嵌契约边界

  #lang racket
  (define/cnotract amount
    (and/c number? positive?)
    150)
  (+ amount 10)

相关文章

  • 7.1契约和边界

    像商业合同(契约)一样,软件的契约是两个部分之间的协议。这个协议指定了权利和义务来规范一个部分到另外一个部分。因此...

  • 7月观影记录

    7.1《异形 契约》★★★☆ 异形上映评分不高,有说是因为删减太多,自己感觉因为有些人物关系剧情发展跟前部...

  • 第7章 云基础设施机制

    7.1逻辑网络边界 将一个网络环境与通信网络的其他部分分割开来,形成一个虚拟网络边界,包含并隔离了一组关于云的IT...

  • 契约的三原色

    契约的三原色 契约的三原色,硬契约+软契约,价值观,契合度。 硬契约和软契约代表了真实世界中我们可以调用的资源。 ...

  • Go笔记-Chap7 接口

    7.1 定义 接口代表一种调用契约,是多个方法声明的集合。 相当于一种协议,遵守事先约定的规则,无需知道对方具体的...

  • 2017-11-27

    人之所从动物界区分出来,无非就那么几点:1、私有产权观念;2、逐渐减少的暴力戕害;3、有自由和契约边界的法律与习俗...

  • 你的契约

    你的契约 人生活在关系之中,也活在各种契约之中。 活出真实的自我,就是选择你想要的契约和价值体系。 契约对我们既是...

  • 4-19怎样成为带团队的高手day4

    7,年度和季度回顾:让心理契约落地。 心理契约的管理思路和管理方法,将“心理契约”具体化。 工具:《个人发展计划表...

  • 行为疗法笔记,行为契约对我们自我管理应用。

    行为契约法是一种类似的用强化和惩罚相偶联帮助个体管理行为的方法。 一、行为契约的定义 行为契约(也称强化关联契约)...

  • 170722-《女性智慧》后记

    为人处事,先学会认清“边界”。 你和爱人的边界 你和孩子的边界 你和父母的边界 你和婆婆的边界——把婆婆当领导,划...

网友评论

      本文标题:7.1契约和边界

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