-
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