gpt4 book ai didi

unit-testing - 定义一个简单的隐式任意

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

我有一个类型 Foo带有一个接受 Int 的构造函数.我如何定义 implicit ArbitraryFoo与 scalacheck 一起使用?

implicit def arbFoo: Arbitrary[Foo] = ???

我想出了以下解决方案,但对于我的口味来说,它有点过于“手动”和低级:
val fooGen = for (i <- Gen.choose(Int.MinValue, Int.MaxValue)) yield new Foo(i)

implicit def arbFoo: Arbitrary[Foo] = Arbitrary(fooGen)

理想情况下,我想要一个高阶函数,我只需要插入一个 Int => Foo功能。

我设法将其缩减为:
implicit def arbFoo = Arbitrary(Gen.resultOf((i: Int) => new Foo(i)))

但我仍然觉得必须有一个稍微简单的方法。

最佳答案

好吧,您可以使用下划线表示法而不是定义整个 Foo -创建函数为 (i: Int) => new Foo(i)) :

class Foo(i: Int)

(1 to 3).map(new Foo(_))

这是有效的,因为 Scala 知道 Foo需要一个 Int ,还有 map正在映射 Int s,因此无需明确说明。

所以这有点短:
implicit def arbFoo = Arbitrary(Gen.resultOf(new Foo(_)))

关于unit-testing - 定义一个简单的隐式任意,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991821/

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