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
你能解释一下我错过了什么,并给我一些你如何在测试代码中使用它们的例子吗?