我想生成参数化案例类的任意元素,并使用ScalaCheck的this library来找到gen
。这适用于具体类型,但不适用于抽象类型。有没有解决的办法?
import com.danielasfregola.randomdatagenerator.RandomDataGenerator._
sealed trait FooBound {
def bar: String
}
trait Foo[A <: FooBound] {
implicit val fooBound = random[FooBound] // works fine
implicit val a = random[A]
// fails due to: could not find implicit value
// for evidence parameter of type
// org.scalacheck.Arbitrary[A]
}
随机生成器依赖于ClassTag类型的隐式值来执行其操作。但是,直到另一个特征或类实际扩展Foo为止,A才是未知的,因此编译器无法像使用fooBound一样提供隐式参数。尝试保留“ a”抽象,然后在其他类中覆盖它,或者将A作为ClassTag传递?在此处查看源代码以查看https://github.com/DanielaSfregola/random-data-generator/blob/master/js/src/main/scala/com/danielasfregola/randomdatagenerator/RandomDataGenerator.scala