我可以找到许多为生成器设置最大大小的示例,但是如何生成介于最小长度和最大长度之间的列表?
1502 次
2 回答
15
生成器的一个简洁属性是它们是可组合的,因此您可以使用生成器简单地为列表的长度组合生成listOfN
器。
for {
numElems <- Gen.choose(5, 12)
elems <- Gen.listOfN(numElems, elemGenerator)
} yield elems
于 2016-01-15T16:52:01.683 回答
1
我在这里唤醒了鬼魂,但万一有人出现:
根据我对已接受答案的评论,该解决方案随机决定 5 到 12 之间的最大长度,但在这种情况下,生成列表的实际大小仍可能为 0(零)或低于 5 的任何值。
我认为以下内容符合 OP 的描述:
Gen
.listOfN(12, elemGenerator)
.suchThat(_.size >= 5)
如果有一个 API 可以方便地生成这个,或者说一个精确大小的列表,那就太酷了,N
.
于 2021-10-11T16:37:09.830 回答