2016-06-18 7 views
1

이것이 폐쇄에 관한 것인지 확실하지 않지만 다음 코드에서 e을 추론 할 수 없습니다. 위의 코드에서 스칼라에서 클로저 이해하기?

type Set = Int => Boolean 

/* characteristic function of Set */ 
def contains(s: Set, elem: Int): Boolean = s(elem) 

/* definition of a singleton set, returning a set of only one given element */ 
def singletonSet(elem: Int): Set = e => e == elem 

는 어디 e은 오는가? 어떻게 그럴 수 있습니까?

답변

2

이것은 폐쇄에 관한 것이 아닙니다. eFunction1[Int, Bool]의 별명 인 Set 유형의 선언에 따라 Int 유형의 요소를 나타냅니다. 전달할 Int 값의 자리 표시 자로 e을 생각해보십시오. 이것은 단지 anonymous function syntax입니다.

println(contains(e => e == 1, 1)) 
: 직접 익명 함수를 통과하면

println(contains(singletonSet(1), 1)) // yields true 
println(contains(singletonSet(1), 2)) // yields false 

이 같은 작업 것이다 : 당신이 singletonSet를 호출 할 때

, 당신은 e 반영됩니다 Int 매개 변수를 전달해야합니다