[함수형 프로그래밍] Scala Closure를 알아보자

Closure 함수형 프로그래밍

Closure

Expression

스칼라에서 Call by name은 기술적으로 존재하지 않는다.

스칼라에서 Expression은 암묵적으로 value로 변경된다. 예를 들어 f함수는 Int=>Int인 g value를 받아서 리턴한다.

def g(x:Int) : Int = x  
def f : Int => Int =  
  g  
  
f(3)

Anonymous Function은 명시적으로 value로 변경된다.

// 다음은 value이다. 
(x:Int) => Int 

Closure은 Expression(함수)를 정의한 후에 곧바로 명시적으로 value로 묶어서 리턴한다.

val t = 0  
val f = {  
  val t = 10  
  def g(x: Int) :Int = x + t  
  g _  
}  
f(20)

Packing

지역 환경을 묶어서 리턴한다.
함수를 묶어서 value를 리턴하는 것이 핵심이다.
블록에서 함수를 리턴하는 방법은 클로져밖에 없다. 즉 value로 만들어주기 위해서 클로져를 사용한다.

Int => Int

Int를 받아 computation 후에 int를 내보내는 value

=>

def와 val의 차이는 =>의 차이와 같다.

댓글

이 블로그의 인기 게시물

[Linux, Unix] export, echo 명령어 알아보기

IEEE 754 부동 소수점 반올림과 근사