2
我試圖使用scalacheck(版本1.12.2)生成任意UUID的列表。出於某種原因,生成列表中的每個UUID都是相同的。對於其他類型(如List [String]或List [Int]),情況並非如此。這是我寫的代碼:Scalacheck總是爲任意的列表生成相同的UUID [UUID]
import org.scalacheck.Arbitrary.arbitrary
import org.scalacheck.Arbitrary
import java.util.UUID
case class SomeUUIDClass(field: List[UUID])
case class SomeOtherClass(field: List[Int])
object Arb {
implicit def arbUUID: Arbitrary[UUID] = Arbitrary {
UUID.randomUUID()
}
implicit def arbUUIDClass = Arbitrary {
for {
field <- arbitrary[List[UUID]]
} yield SomeUUIDClass(field)
}
implicit def arbOtherClass = Arbitrary {
for {
field <- arbitrary[List[Int]]
} yield SomeOtherClass(field)
}
def main(args: Array[String]) {
println("without uuids:")
arbitrary[SomeOtherClass].sample.get.field.foreach(println(_))
println("")
println("with uuids:")
arbitrary[SomeUUIDClass].sample.get.field.foreach(println(_))
}
}
和樣品運行:)
without uuids:
-1
0
2147483647
-1
-2147483648
527079214
-698179980
1192016877
-1001957700
0
682853458
-1
-2147483648
109314552
1130736291
1080418
1771214863
1164874892
-1306566270
2147483647
-2009106057
2147483647
-2147483648
-1
-1
-1
945958506
777623735
-490377345
-272177229
0
-2147483648
-1753697474
-1
736327057
415072340
0
with uuids:
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
a49540b4-29ce-464f-946d-3649f38fb8a6
謝謝!這解決了它。 – emccorson