DSL in scala using case classes

Viewed 1041

My use case has case classes something like

 case class Address(name:String,pincode:String){
    override def toString =name +"=" +pincode
  }

 case class Department(name:String){
   override def toString =name
 }

 case class emp(address:Address,department:Department)

I want to create a DSL like below.Can anyone share the links about how to create a DSL and any suggestions to achieve the below.

 emp.withAddress("abc","12222").withDepartment("HR")

Update: Actual use case class may have more fields close to 20. I want to avoid redudancy of code

5 Answers
Related