4
私はタイプFoo
で、コンストラクタはInt
です。 scalachckでFoo
を使用するためにimplicit
Arbitrary
を定義するにはどうすればよいですか?単純な暗黙的な仲裁を定義する
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)))
しかし、少し簡単な方法があるように持っているように私はまだ感じます。
は実際には、ケースクラスはScalaでは関数として扱われるので、あなたはさらに簡単にそれを書くことができます。arbFoo =任意(Gen.resultOf(フー))デフ '暗黙の'。 –