본문 바로가기
Language/Scala

[scala] 스칼라 익스트랙터(extractor) apply, unapply

by 제2의지니 2022. 8. 25.

- extractor 

 기존 타입에 대한 새로운 패턴을 정의 가능

 

 

- apply

인수를 받아 객체를 생성하는 생성자와 비슷

 

 

- unapply 

객체를 받아서 인수를 되돌려줌

패턴 일치 및 부분 함수에서 자주 사용됨

 

리턴타입

- Boolean

- Option[T] : T유형의 단일 하위 값 반환

- Option[(T1,T2 ..., Tn)] : 여러 하위 값을 반환 

 

 

예제

Menu Object를 정의 apply메소드에서는 이름과, 가격을 파라미터로 받고 리턴은 문자열로 해줌

 

object Menu {

  def apply(name: String,price: String): String = s"$name--$price"

  def unapply(price: String): Option[String] = {
    val stringArray: Array[String] = price.split("--")
    if (stringArray.tail.nonEmpty) Some(stringArray(1)) else None
  }
}

 

결과 

val menu = Menu("짜장면", "6000")
println(menu)

val Menu(price) = menu
println(price)

 

'Language > Scala' 카테고리의 다른 글

[Scala] 스칼라 설치 및 IDE 셋팅  (0) 2021.10.17

댓글