Scala 2.13 - Используйте ADT для расширения запечатанного типажа Scala
Я видел несколько примеров использования ADT для расширения типов данных, чтобы они соответствовали любому из вариантов, но я немного запутался в том, как реализовать это в таком случае использования. В случае классов я бы создал их и просто добавил расширенияTraitName
а как насчет примитивных типов данных?
Моя запечатанная чертаAEMExpectedPayload
который может быть логическим, Int, String, Seq[String],Seq[Boolean] или Seq[Int].
Я хочу сделать что-то вроде этого:
sealed trait StringInt
String extends StringInt
Int extends StringInt
Я вижу один путь:
sealed trait StringInt
case class Stringy(s : String) extends StringInt
case class Inty(s : Int) extends StringInt
Однако я хотел подтвердить, что это единственный способ и ничего больше?
Вот как я хотел бы его использовать:
val stringResult:StringInt = "test-string"
val intResult:StringInt = 22