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

0 ответов

Другие вопросы по тегам