1

使用一个基本示例,我尝试使用此库随机生成一堆 Person ( case class Person(name: String, age: Int) 实例以生成随机数据。

我遇到的问题是在创建一个具有年龄参数限制的任意值时,如下所示。

  val arbPersonUnder18: Arbitrary[Person] = Arbitrary(
    for {
      name <- Gen.alphaStr
      age <- Gen.chooseNum(Int.MinValue, 17)
    } yield Person(name, age)
  )

  "validatePersonForAlcohol" should {
    "ensure people with age less than 18 cannot buy alcohol" in {
      implicit val _: Arbitrary[Person] = arbPersonUnder18
      forAll { person: Person =>
        ...
      }
    }
  }

这导致could not find implicit value for parameter arbA: org.scalacheck.Arbitrary[pbtexample.Person]

我不明白为什么它无法找到所需的任意内容,任何建议都会很棒。

4

1 回答 1

2

即使隐式值很少(如果有的话)被名称引用,它仍然需要一个,语言规范称之为“稳定标识符”。

使用_作为变量名告诉编译器它可以在创建后忘记这个值。

于 2020-11-13T19:38:17.743 回答