2012-09-28 3 views
9

: 여기 무엇을 의미하는지 '합니다 MyType = Int 인 => 부울'스칼라 선언 아래 무엇을 의미하는지

type MyType = Int => Boolean 

내 이해입니다 :

나는 새로운 형태의 '합니다 MyType'을 선언하고 있습니다 만 고차 함수가 무엇을 의미하는지 '지능 => 부울'

+1

참고 (http://www.coursera.org/course/progfun) "Week 2 : Higher Order Functions"과제 :-)) – netzwerg

+0

@netzwerg 예, '단순한'것조차 어렵다고 생각합니다. – user701254

+1

걱정하지 마세요.이 함수는 매우 간단합니다. higher order 함수는 다른 함수를 입력 매개 변수로 사용하거나 다른 함수를 반환하거나 출력하는 함수입니다 ([Wikipedia] (http://en.wikipedia.org/wiki/Higher). -order_function)) – netzwerg

답변

14

그것은 너무 많은 새로운 유형을 별칭 선언으로 새로운 유형를 선언 아니에요. 그들은 여전히 ​​같은 유형입니다 :하지만 별칭을 사용하면 좀 더 간결하게 작성할 수 있습니다.

Int => Boolean은 하나의 인수 인 Int를 사용하고 부울을 반환하는 함수 유형입니다. 예를 들어

입력 Int => Boolean을 가질 수있다 "이상 5"와 같은 기능 :

type MyType = Int => Boolean 
val greaterThan5: MyType = (x: Int) => x > 5 
greaterThan5(7) // true 
3

당신은 다음과 같은 컴파일 올바른 :

다음
type MyType = Int => Boolean 
def positive(x: Int) = x > 0 
val fun: MyType = positive 
fun(42) //yields true 

당신은 유형 별칭이 MyType을 말하는 선언 Int을 취하고 Boolean을 반환하는 함수와 같습니다. 그런 선언과 일치하는 메소드를 작성합니다. 마지막으로이 메소드를 MyType 유형의 변수에 지정합니다. 그것을 컴파일하고 잘 작동합니다. 이 새로운 형태의 단지 별명, 아니라고

참고 :`지능 => Boolean`가 니펫 [코 세라]의 기인하지 않더라도 고차 함수 (_not_ 것을

trait MyType2 extends (Int => Boolean) 
val fun2: MyType2 = positive _ 
error: type mismatch; 
found : Int => Boolean 
required: MyType2 
     val fun2: MyType2 = positive _ 
         ^
관련 문제