Scala 似乎定义了 3 种断言:assert
, require
and assume
.
据我所知,差异(与通用断言相比)require
它是专门用于检查输入(参数、传入消息等)的。是什么意思assume
then?
如果你看一下代码Predef.scala
你会发现这三个人的工作非常相似:
def assert(assertion: Boolean) {
if (!assertion)
throw new java.lang.AssertionError("assertion failed")
}
def assume(assumption: Boolean) {
if (!assumption)
throw new java.lang.AssertionError("assumption failed")
}
def require(requirement: Boolean) {
if (!requirement)
throw new IllegalArgumentException("requirement failed")
}
还有一些版本出于报告目的而采用额外的参数(请参阅http://harrah.github.com/browse/samples/library/scala/Predef.scala.html http://harrah.github.com/browse/samples/library/scala/Predef.scala.html).
区别在于它们抛出的异常类型和它们生成的错误消息。
然而,静态检查器可能会以不同的方式对待这三种情况。其目的是为了assert
指定静态检查应尝试证明的条件,assume
用于检查者可能假设成立的条件,而require
指定调用者必须确保的条件。如果静态检查器发现违反assert
它认为这是代码中的错误,而当require
如果被违反,则假定调用者有错。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)