부분 적용 함수란 기존에 있던 메서드의 파라미터를 미리 채워둔 함수를 새로 만드는 것을 의미한다. 아래는 부분 적용 함수의 예제들이다. ex 1) def numberAdd1(number1: Int)(number2: Int) = number1 + number2 val numberAdd2 = numberAdd1(2)_ // Int => Int println(numberAdd2(1)) // 3 ex 2) def numberAdd3(number1: Int)(number2: Int)(number3: Int) = number1 + number2 + number3 val numberAdd4 = numberAdd3(1)_ // Int => (Int => Int) println(numberAdd4(1)(1)) // 3 ..
sealed 제어자는 class/trait에 사용할 수 있으며 같은 파일에서만 상속받을 수 있도록 강제하기 위한 제어자이다. 만약 다른 파일에서 상속받으려 한다면 컴파일 시 아래와 같은 에러가 발생한다. Illegal inheritance from sealed trait 스칼라에서 사용되는 예는 Option이나 Try가 있다. 상속을 제어하기 위한 sealed 제어자가 있는 class/trait을 상속받은 자식은 어디서든 상속할 수 있기 때문에 보통 final 제어자와 같이 쓰거나 object로 생성한다. 스칼라에서 사용되는 예는 Option의 Some(final 제어자)과 None(object)이 있다. trait과 class의 차이점은 여러가지가 있을 수 있지만 두 가지 차이점을 작성해본다.(trai..
unapply 메소드는 객체에서 인수를 추출하기 위한 메소드로 패턴 매칭에서 자주 쓰인다. 아래는 패턴 매칭에서 사용하는 예시이다. object NumberClass { def apply(num: Int): Int = num def unapply(num: Int): Option[Int] = Some(num) } object Main extends App { val number: Int = NumberClass(100) number match { case NumberClass(n) => println(n) // 100 } } 패턴 매칭이 아니라 변수로 추출하여 사용할 수도 있는데 아래는 그 예시이다. object NumberClass { def apply(num: Int): Int = num def un..