I am learning scala and tried following form Scala Cookbook:
trait Animal
trait FurryAnimal extends Animal
case class Dog(name:String) extends Animal
case cl
All case classes automatically extend Product and Serializable. It looks ugly ? yes.
Basically ,Product can be viewed as heterogeneous collections. All Product classes viz. (Product1 , Product2 ...) extends Product which contains some common methods to use like productArity , productElement etc.
Like Case classes other types that extends Product are List,Tuple etc
From my scala worksheet,
val product : Product = (10,"String",3) //> product : Product = (10,String,3)
product.productArity //> res0: Int = 3
product.productElement(0) //> res1: Any = 10
product.productElement(1) //> res2: Any = String
product.productElement(2) //> res3: Any = 3
case class ProductCase(age:Int,name:String,ISBN:Int)
ProductCase(23,"som",5465473).productArity //> res4: Int = 3
For details look here.