延迟生成器对于递归数据结构可能有意义。我想知道这个 Prop.delay
在什么情况下会有所帮助。您能举一个现实生活中的例子吗?
最佳答案
I'm wondering in which situation this Prop.delay could be helpful. Could you please demonstrate a real life example.
假设您正在 Scalacheck 中为基于属性的测试套件编写扩展,并希望用户构建其属性,并且您的扩展需要属性,但不应立即执行它们。
实际上,Scalacheck 在内部使用 Prop.delay
构造属性,以允许用户使用 Properties
特征/父类(super class)定义测试。
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()
关于scala - ScalaCheck 中 Prop.delay 的正确用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41885844/