首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ScalaCheck Arbitrary[T]与Scalacheck Gen[T]的区别

ScalaCheck Arbitrary[T]与Scalacheck Gen[T]的区别
EN

Stack Overflow用户
提问于 2014-02-24 16:42:27
回答 1查看 794关注 0票数 9

在我的测试中,我相当广泛地使用了Specs2 + ScalaCheck,并且有一些模式需要考虑。我仍然没有发现我的函数应该使用ArbitraryT还是GenT,因为它们非常相似:

代码语言:javascript
复制
sealed abstract class Arbitrary[T] {
  val arbitrary: Gen[T]
}

函数签名会是这样的吗:

代码语言:javascript
复制
maxSizedIntervalArbitrary[A,B](implicit ordering:Ordering[A], genStart:Arbitrary[A], genEnd:Arbitrary[B]):Arbitrary[TreeMap[A,B]]

或者我应该在Gen抽象层工作?

EN

回答 1

Stack Overflow用户

发布于 2014-02-24 17:34:43

我会说两个都做:

代码语言:javascript
复制
def maxSizedIntervalArbitrary[A,B](genStart:Gen[A], genEnd:Gen[B])(implicit ordering:Ordering[A]):Gen[TreeMap[A,B]]

implicit def maxSizedIntervalArbitrary[A,B](implicit ordering:Ordering[A], genStart:Arbitrary[A], genEnd:Arbitrary[B]):Arbitrary[TreeMap[A,B]] = 
  Arbitrary(maxSizedIntervalArbitrary(arbitrary[A], arbitrary[B]))

基本上,Arbitrary用于提供隐式Gen,因此这允许同时使用具有显式Gen和隐式ArbitraryforAll变体。我不认为非implicit Arbitrary是有用的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21982721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档