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
。
我可以找到很多为生成器设置最大大小的示例,但是如何生成介于最小和最大长度之间的列表?
关于生成器的一个巧妙 属性 是它们是可组合的,因此您可以使用 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
。