我想生成一个整数列表,该列表对应于ScalaCheck.
    import org.scalacheck._
    import Arbitrary.arbitrary
    val smallInt = Gen.choose(0,10)
    val bigInt = Gen.choose(1000, 1000000)
    val zeroOrOneInt = Gen.choose(0, 1)
    val smallEvenInt = smallInt suchThat (_ % 2 == 0)
    val gens = List(smallInt, bigInt, zeroOrOneInt, smallEvenInt)
    //val listGen: Gen[Int] = ??
    //println(listGen.sample) //should print something like List(2, 2000, 0, 6)
对于给定的gens,我想创建一个生成器listGen,其有效样本可以是List(2, 2000, 0, 6)。这是我第一次尝试使用元组。
    val gensTuple = (smallInt, bigInt, zeroOrOneInt, smallEvenInt)
    val tupleGen = for {
        a <- gensTuple._1
        b <- gensTuple._2
        c <- gensTuple._3
        d <- gensTuple._4
    } yield (a, b, c, d)
    println(tupleGen.sample) // prints Some((1,318091,0,6))
这可行,但我不想使用元组,因为生成器列表gens是动态创建的,并且列表的大小不是固定的。有没有办法用列表做到这一点?
我希望listGen在 scalacheckforAll属性检查中使用 list() 的生成器。
这看起来像是一个玩具问题,但这是我能做的最好的事情,以创建一个独立的片段来重现我面临的实际问题。