본문 바로가기

프로그래밍/Scala

Currying & Closure 완전 이해하기

def sum(f:Int=>Int)(a:Int,b:Int)={
  def sumF(a:Int,b:Int):Int =
    if(a<=b) f(a)+sumF(a+1,b)
    else 0
  sumF(a,b)
}

def sumLinear = sum((n)=>n) _
sumLinear(1,10)

 

 

 

def sumLinear = sum((n)=>n) _

여기에서 언더바를 사용하지 않으면 에러가 뜨는데, 여기에서 에러가 뜨는 이유는 closure의 문제 보단 sum(f)(a,b) 인자 생략의 문제인 것 같다!!! 어떤 인자가 올 자리라는 것을 표시하는 의미에서 _ 를 붙여야한다.

위의 sum def에서sumF는 언더바를 붙이든 안붙이든 에러가 생기지 않는다. 이는 inference를 해주기 때문이다.

 

 

 

 

 

 

 

def 안에 def 가 있을 때

 

'프로그래밍 > Scala' 카테고리의 다른 글

1101 Inheritance vs. Composition  (0) 2022.11.01
Structure Type  (0) 2022.10.21
PART 1 - Currying (0926)  (0) 2022.10.20
HW 1. Exercise 1-2 보충  (1) 2022.10.02
Tail Recursion 추가 포스팅  (1) 2022.10.02