Reputation: 10163
I have defined below algebraic datatype in scala.
sealed abstract class DeviceType(device : Option[Int])
case object DeviceType {
final case object Mobile extends DeviceType( device = Some(4) )
final case object Tablet extends DeviceType ( device = Some(5) )
final case object Desktop extends DeviceType( device = Some(2) )
final case object TV extends DeviceType ( device = Some(3) )
final case object Unknown extends DeviceType ( device = None )
}
When I do DeviceType.Mobile.device
, I get below error.
error: value device is not a member of object DeviceType.Mobile
How can I access the device member in the case objects in ADTs.
Upvotes: 0
Views: 29
Reputation: 629
you need to add val
modifier to device attribute in order to have the accessor.
sealed abstract class DeviceType(val device : Option[Int])
case object DeviceType {
final case object Mobile extends DeviceType( device = Some(4) )
final case object Tablet extends DeviceType ( device = Some(5) )
final case object Desktop extends DeviceType( device = Some(2) )
final case object TV extends DeviceType ( device = Some(3) )
final case object Unknown extends DeviceType ( device = None )
}
Upvotes: 3