我在scala中有一个名为A的特征,我正在创建一个名为A1的case对象。像这样:
trait A
case object A1 extends A
现在,我想为它创建一个Scalacheck Gen
,所以我创建了一个对象GenA
,如下所示:
object GenA {
def a: Gen[A] = for {
value <- A1
} yield value
}
但是当我尝试编译它时,我收到了以下错误:
value map is not a member of object A1
[error] value <- A1
[error] ^
[error] one error found
[error] (test:compileIncremental) Compilation failed
有人可以帮我解决这个错误吗?
答案 0 :(得分:0)
可能你想尝试一下这个:
import org.scalacheck.Gen
trait A
case object A1 extends A
object GenA {
def a: Gen[A] =
for {
value <- Gen.const(A1)
} yield value
}
直接返回发电机..
答案 1 :(得分:0)
def a: Gen[A] = for {
value <- foo
} yield value
如果foo
的类型为Gen[A]
,则会编译。但是,在您的代码中,您使用A1
,而不是Gen[A]
。
如果要定义始终返回A1
的生成器,请转到Gen.const
。此外,您也可以将a
设为val
而不是def
,因为它不会采用任何参数:
val a: Gen[A] = Gen.const(A1)