ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • scala enumeratum enum 사용하기
    scala/basic 2021. 11. 13. 23:20

    enumeratum 을 사용해 보자

     

    build.sbt 에 라이브러리를 추가한다.

    libraryDependencies ++= Seq(
      "com.beachape" %% "enumeratum"           % "1.7.0",
      "com.beachape" %% "enumeratum-play-json" % "1.7.0"
    )

     

    간단한 경우

    import enumeratum._
    import play.api.libs.json.Json
    
    import scala.collection.immutable
    
    sealed abstract class Country extends EnumEntry
    object Country extends Enum[Country] with PlayJsonEnum[Country] {
      override def values: immutable.IndexedSeq[Country] = findValues
    
      case object Kr extends Country
      case object Jp extends Country
    }
    
    object SimpleTest {
      def main(args: Array[String]): Unit = {
        val country: Country = Country.withName("Kr")
        Country.withName("kr") // java.util.NoSuchElementException
    
        println(country.entryName)               // Kr
        println(country.toString)                // Kr
        println(Json.toJson(country).toString()) // "Kr"
      }
    }

     

    복잡한 경우

    import enumeratum._
    import play.api.libs.json.Json
    
    import scala.collection.immutable
    
    sealed abstract class Country(val lang: String) extends EnumEntry
    object Country extends Enum[Country] with PlayJsonEnum[Country] {
      override def values: immutable.IndexedSeq[Country] = findValues
    
      case object Kr extends Country("ko") {
        override def entryName: String = "kr"
      }
    
      case object Jp extends Country("ja") {
        override def entryName: String = "jp"
      }
    }
    
    object ComplexTest {
      def main(args: Array[String]): Unit = {
        val country: Country = Country.withName("kr")
        Country.withName("Kr")      // java.util.NoSuchElementException
    
        println(country.lang)       // ko
        println(country.entryName)  // kr
        println(country.toString)   // Kr
        println(Json.toJson(country).toString()) // "kr"   
      }
    }

    'scala > basic' 카테고리의 다른 글

    sealed trait typeclass  (0) 2022.03.29
    scala 에서 retry 구현하기  (0) 2021.11.25
    Variance 문제  (3) 2021.10.22
    apache poi 를 사용해 scala 에서 Excel 파일 읽기  (0) 2021.10.14
    Scala State Monad  (3) 2021.08.03

    댓글

Designed by Tistory.