2016-07-29 53 views
1

的情況下類參數值我有一個案例類與250個字段:如何產生階

case class Data(field1:String, field2:Int, ..) 

是否有使用Scala的檢查,以生成值的參數

不相干的問題的方式我「VE看着:
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?

+0

您可以使用無形庫中的'Generic'方法將'HList'轉換爲case類實例。這裏有一個例子:https://github.com/milessabin/shapeless/blob/master/examples/src/main/scala/shapeless/examples/csv.scala。 – devkat

回答

3

使用scalacheck-shapeless

import org.scalacheck.Shapeless._ 
import org.scalacheck.Arbitrary._ 

implicitly[Arbitrary[Data]] 

上面的代碼中執行以下操作:

  • 召喚一個shapeless.Generic[Data]通過隱宏案例類能把你變成一個shapeless.HList
  • 遞歸獲得所有Arbitrary[String]Arbitrary[Int]等對於每個字段
  • 將所有這些組裝成新的Arbitrary[Data]實例