简体   繁体   English

生成随机大小的Scala列表

[英]Generating a Scala list of random size

I am creating a scala json using : 我正在使用创建一个scala json:

lazy val genDefaultValue: Gen[List[JsonPatch]] = {
listOf(
  genJson("/primary", true),
  genJson("/secondary", true),
  genJson("/fallback", true)
)
}

This creates only a random json with one of the item. 这将仅创建带有项目之一的随机json。 I am unable to create a list of random size using above 3 list elements. 我无法使用上述3个列表元素创建随机大小的列表。 ListSize can be anything between 1 to 3. ListSize可以是1到3之间的任何值。

genJson is an internal function which creates a Json when passed a path, Gen[T] for expected type. genJson是一个内部函数,当通过预期类型的​​路径Gen [T]时会创建一个Json。

One option is as follows: 一种选择如下:

  1. Reorder the list with Random.shuffle() (if you want the order to differ each time). 使用Random.shuffle()对列表重新排序(如果您希望每次的顺序都不同)。
  2. Call .take(x) on the (optionally shuffled) list, where x is a random value between 1 and 3. 在(可以随机播放的)列表中调用.take(x) ,其中x是1到3之间的随机值。

Assuming you're using ScalaCheck and genJson returns an instance of Gen[JsonPatch] , the following code defines a generator for lists of JsonPatch instances: 假设您使用的是ScalaCheck,并且genJson返回Gen[JsonPatch]的实例,以下代码为JsonPatch实例列表定义了一个生成器:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM