如何挑選序列元素的子集?如何定義生成序列元素子集的ScalaCheck生成器?
舉例來說,如果我有序列Seq(1,2,3,4,5)
,我想每次調用我的發電機來產生類似
Seq(1,4)
或
Seq(1,2,3,5)
或
Seq()
我怎樣才能定義這樣一個發電機?
如何挑選序列元素的子集?如何定義生成序列元素子集的ScalaCheck生成器?
舉例來說,如果我有序列Seq(1,2,3,4,5)
,我想每次調用我的發電機來產生類似
Seq(1,4)
或
Seq(1,2,3,5)
或
Seq()
我怎樣才能定義這樣一個發電機?
org.scalacheck.Gen.someOf
是發電機,其拍攝由迭代元素的隨機數:
scala> import org.scalacheck.Gen
import org.scalacheck.Gen
scala> val baseSeq = Seq(1, 2, 3, 4, 5)
baseSeq: Seq[Int] = List(1, 2, 3, 4, 5)
scala> val myGen = Gen.someOf(baseSeq).map(_.toSeq)
myGen: org.scalacheck.Gen[Seq[Int]] = [email protected]
scala> myGen.sample.head
res0: Seq[Int] = List(3, 4, 5)
scala> myGen.sample.head
res1: Seq[Int] = List(1, 2, 3, 4)
scala> myGen.sample.head
res2: Seq[Int] = List()
您選擇的'Seq'是否有獨特的元素? – Jubobs
是的,這是我的想法 –
是的,它不是一個嚴格的(適當的)子集 –