Skip to content

6.5 부분 적용 함수와 부분함수

Jaejin Gim edited this page Sep 19, 2016 · 1 revision

6.5 부분 적용 함수와 부분함수

부분 적용 함수

scala> def cat1(s1: String)(s2: String) = s1 + s2
cat1: (s1: String)(s2: String)String

scala> val hello = cat1("hello ") _
hello: String => String = <function1>

scala> hello("World!")
res4: String = hello World!
  • 인자 목록이 둘 이상 있는 함수의 경우, 나중의 인자 목록을 몇 개 생략하여 새로운 함수를 정의할 수 있다.
  • 뒤에 밑줄을 추가해서 부분 적용 함수를 원한다는 사실을 알려준다.
  • 한 인자 목록안의 인자 중 뒤의 것을 생략한 뒤 나중에 이를 적용하는 것은 불가능하며며 오직 여러 인자 목록에 대해서만 적용가능하다.

부분함수

  • 어떤 타입의 인자를 하나만 받지만 , 그 타입이 취할 수 있는 모든 값 중 일부만 정의한 함수
scala> val inverse: PartialFunction[Double, Double] = { case d if d != 0.0 => 1.0 / d }
inverse: PartialFunction[Double,Double] = <function1>

scala> inverse(1.0)
res5: Double = 1.0

scala> inverse(0.0)
scala.MatchError: 0.0 (of class java.lang.Double)
...
Clone this wiki locally