gpt4 book ai didi

ScalaCheck - 有序数组生成器

转载 作者:行者123 更新时间:2023-12-04 14:43:40 24 4
gpt4 key购买 nike

我是第一次尝试 ScalaCheck,我想生成一个有序的 Int 数组。

我阅读了文档并进行了一些搜索,但没有找到方法。

有人可以对此有所了解吗?

谢谢

最佳答案

我假设您想要一个已排序的任意整数数组,对吗?如果是这种情况,您可以使用以下任一方法来获取 Gen[Array[Int]] :

val genIntArray = Gen.containerOf[Array, Int](
Gen.chooseNum(Int.MinValue, Int.MaxValue)
)

或者:
val genIntArray = implicitly[Arbitrary[Array[Int]]].arbitrary

然后您可以使用 map修改生成器以对其结果进行排序:
 val genSortedIntArray = genIntArray.map(_.sorted)

现在你可以运行 genSortedIntArray.sample.get几次让自己相信结果是一个排序的随机整数数组。

如果你想要一个 Arbitrary对于排序的整数数组,最好定义一个包装器而不是隐藏默认值 Arbitrary[Array[Int]] .例如,您可以编写以下内容:
case class SortedIntArray(value: Array[Int]) extends AnyVal

object SortedIntArray {
implicit val arb: Arbitrary[SortedIntArray] = Arbitrary(
genSortedIntArray.map(SortedIntArray(_))
)
}

进而:
forAll { (a: SortedIntArray) =>
confirmThatMyFunctionOnSortedIntArraysWorks(a.value)
}

关于ScalaCheck - 有序数组生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29058737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com