【发布时间】:2010-09-08 10:26:00
【问题描述】:
UserGuide 的 scalacheck 项目提到了大小的生成器。解释代码
def matrix[T](g:Gen[T]):Gen[Seq[Seq[T]]] = Gen.sized {size =>
val side = scala.Math.sqrt(size).asInstanceOf[Int] //little change to prevent compile-time exception
Gen.vectorOf(side, Gen.vectorOf(side, g))
}
对我没有任何解释。经过一番探索,我了解到生成序列的长度不取决于生成器的实际大小(根据 javadoc,Gen 对象中有 resize 方法“创建生成器的调整大小版本”(也许这意味着不同的东西?))。
val g = Gen.choose(1,5)
val g2 = Gen.resize(15, g)
println(matrix(g).sample) // (1)
println(matrix(g2).sample) // (2)
//1,2 produce Seq with same length
您能否解释一下我遗漏了什么,并举例说明您如何在测试代码中使用它们?
【问题讨论】:
标签: scala scalacheck