Scalacheck,大小在 5 到 12 之间的列表生成器

Scalacheck, generator for lists between size 5 and 12

我可以找到很多为生成器设置最大大小的示例,但是如何生成介于最小和最大长度之间的列表?

关于生成器的一个巧妙 属性 是它们是可组合的,因此您可以使用 listOfN 生成器简单地根据列表的长度组合一个生成器。

for {
  numElems <- Gen.choose(5, 12)
  elems <- Gen.listOfN(numElems, elemGenerator)
} yield elems

我在这里唤醒鬼魂,但万一有人来:

根据我对已接受答案的评论,该解决方案随机决定 5 到 12 之间的最大长度,但在这种情况下,生成列表的实际大小仍可能为 0(零)或任何小于 5 的值。

我认为以下内容符合 OP 描述的内容:

Gen
  .listOfN(12, elemGenerator)
  .suchThat(_.size >= 5)

如果有一个 API 可以方便地生成这个,或者说一个精确大小的列表,那就太好了,N