生成随机大小的Scala列表

时间:2015-04-15 20:40:31

标签: json scala

我正在使用:

创建一个scala json
lazy val genDefaultValue: Gen[List[JsonPatch]] = {
listOf(
  genJson("/primary", true),
  genJson("/secondary", true),
  genJson("/fallback", true)
)
}

这只会创建一个带有其中一个项目的随机json。我无法使用以上3个列表元素创建随机大小列表。 ListSize可以是1到3之间的任何值。

genJson是一个内部函数,它在传递路径时创建一个Json,Gen [T]为预期类型。

2 个答案:

答案 0 :(得分:2)

一个选项如下:

  1. 使用Random.shuffle()对列表重新排序(如果您希望每次订单都不同)。
  2. 在(可选改组)列表中调用.take(x),其中x是1到3之间的随机值。

答案 1 :(得分:0)

假设您正在使用ScalaCheck并且genJson返回Gen[JsonPatch]的实例,以下代码为JsonPatch个实例的列表定义了一个生成器:

lazy val genDefaultvalue =
   Gen.listOf(Gen.oneOf(genJson("/primary", true),
                        genJson("/secondary", true),
                        genJson("/fallback", true)))