gpt4 book ai didi

Scalacheck:生成与生成器列表相对应的列表

转载 作者:行者123 更新时间:2023-12-04 10:54:07 25 4
gpt4 key购买 nike

我想生成一个与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))

这可行,但是我不想使用元组,因为generators( gens)的列表是动态创建的
并且列表的大小不是固定的。有没有办法用列表做到这一点?

我想在scalacheck listGen属性检查中使用列表的生成器( forAll)。

这看起来像是玩具问题,但这是
我能做的最好的事情就是创建一个独立的片段,以重现我的实际问题
面对。

最佳答案

如何使用Gen.sequence方法?它将Iterable[Gen[T]]转换为Gen[C[T]],其中C可以是List:

  def sequence[C[_],T](gs: Iterable[Gen[T]])(implicit b: Buildable[T,C]): Gen[C[T]] = 
...

关于Scalacheck:生成与生成器列表相对应的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13549145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com