延迟生成器可能对递归数据结构有意义。我想知道这在哪种情况下Prop.delay
会有所帮助。能否请您演示一个现实生活中的例子。
问问题
43 次
1 回答
2
我想知道这个 Prop.delay 在哪种情况下会有所帮助。能否请您演示一个现实生活中的例子。
假设您正在 Scalacheck 中为基于属性的测试套件编写扩展,并希望用户构建他们的属性,而您的扩展需要属性但不应该立即执行它们。
实际上,Scalacheck 在Prop.delay
内部使用构造属性来允许用户使用Properties
trait/superclass 定义测试。
class BadExample extends Properties("Bad example") {
property("divide by 0") = {
Prop.forAllNoShrink { x: Int =>
x / 0 == 0 // No!
}
}
}
这会收集属性,以便它们可以由测试运行器执行(作为应用程序或通过 sbt)
sealed class PropertySpecifier() {
def update(propName: String, p: => Prop) = {
props += ((name+"."+propName, Prop.delay(p)))
}
}
private val props = new scala.collection.mutable.ListBuffer[(String,Prop)]
lazy val property = new PropertySpecifier()
于 2017-04-17T18:17:37.437 回答