如何在 Scala 中为案例类参数生成值 [英] How to generate values for case class parameters in scala
本文介绍了如何在 Scala 中为案例类参数生成值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个包含 250 个字段的案例类:
I have a case class with 250 fields:
case class Data(field1:String, field2:Int, .. )
有没有办法使用scala检查为其参数生成值
Is there a way to use scala check to generate values for its parameter
我看过的不相关的问题:
如何使用宏为 Scala 案例类中的每个字段生成案例对象?
在 Scala 中动态生成案例类
创建任意实例对于在 ScalaCheck 中包含Numeric"的案例类?
Irrelevant questions I've looked at:
How to generate case objects for every field in a Scala case class using macro?
Dynamically generate case class in Scala
Create an Arbitrary instance for a case class that holds a `Numeric` in ScalaCheck?
推荐答案
import org.scalacheck.Shapeless._
import org.scalacheck.Arbitrary._
implicitly[Arbitrary[Data]]
以上代码段执行以下操作:
The above snippet does the following:
- 通过隐式宏调用
shapeless.Generic[Data]
将您的案例类转换为shapeless.HList
- 递归获取每个字段的所有
Arbitrary[String]
、Arbitrary[Int]
等 - 将所有这些组装到一个新的
Arbitrary[Data]
实例中
- Summon a
shapeless.Generic[Data]
via implicit macro to transform you case class into ashapeless.HList
- Recursively obtain all
Arbitrary[String]
,Arbitrary[Int]
and so on for every field - Assemble all that into a new
Arbitrary[Data]
instance
这篇关于如何在 Scala 中为案例类参数生成值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文