1 함수 리터럴 해석
scal> 1 + 2
res0: Int = 3
********** 해석 *********
res0 : 사용자가 정의한 이름
Int : 결과 타입
3 : 결과값

scala>var increase = (x: Int) => x + 1
increase: (Int) => Int = <function1>
********** 해석 *********
결과 타입 : (Int) => Int , 즉 함수 리터럴이고
결과 값 : function1
이렇게 해석하는게 맞나요?


2 클로저의 의미
var more = 1
val addMore = (x: Int) => x + more
여기서 클로저는 함수 리터럴 내에 변수를 말한다.
즉 인자로 받지 않은 more 가 된다.
addMore 라는 것이 함수 리터럴을 값으로 가지고 있으므로
addMore(10)을 하면 그 값이 x 에 들어가서
결과는 11이 된다.

def makeIncrease(x: Int) = (x: Int) => x + more
즉 makeIncrease함수 자체가 함수 리터럴을 값으로 가지고 있다.
여기서 주의 해야 할것이
makeIncrease(1) 을 하는 것은 함수 리터럴이 호출 되는 것이 아니라
함수 리터럴 안에 more 값이 1로 세팅이 된다.
val inc1 = makeIncrease(1)
inc1(10)을 호출해야 함수 리터럴이 더해져서
11 이 된다......

이거 이해 하는게 왜 이리 어렵지? 머리가 나쁘다.

Posted by gt1000

블로그 이미지
gt1000

태그목록

공지사항

어제
오늘

달력

 « |  » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함