什麼是下面斯卡拉聲明的意思是:何謂「的MyType = INT =>布爾」
type MyType = Int => Boolean
這是我的理解:
我聲明瞭一個新類型「的MyType」,但什麼是高階函數意味着「INT =>布爾」
什麼是下面斯卡拉聲明的意思是:何謂「的MyType = INT =>布爾」
type MyType = Int => Boolean
這是我的理解:
我聲明瞭一個新類型「的MyType」,但什麼是高階函數意味着「INT =>布爾」
它與其說是宣佈一個新的型爲聲明的新型別名。它們仍然是相同的類型:但別名可以讓您的寫法更加簡潔。
Int => Boolean
是一個函數的類型,它接受一個參數Int,並返回一個布爾值。
例如,像 「大於5」 的功能可以有Int => Boolean
類型:
type MyType = Int => Boolean
val greaterThan5: MyType = (x: Int) => x > 5
greaterThan5(7) // true
你是正確的,下面的編譯:
type MyType = Int => Boolean
def positive(x: Int) = x > 0
val fun: MyType = positive
fun(42) //yields true
在這裏,您聲明類型別名說MyType
相當於以Int
並返回Boolean
的函數。然後你創建一個匹配這種聲明的方法。最後,將此方法分配給類型爲MyType
的變量。它編譯和工作得很好。
注意,這只是一個別名,而不是一個新類型:
trait MyType2 extends (Int => Boolean)
val fun2: MyType2 = positive _
error: type mismatch;
found : Int => Boolean
required: MyType2
val fun2: MyType2 = positive _
^
注意,'INT => Boolean'是_not_高階函數(即使不是如果摘錄從[Coursera的]莖(http://www.coursera.org/course/progfun)「第2周:高階函數」任務;-)) – netzwerg
@netzwerg是的,它似乎即使是'簡單'的東西很難找到。 – user701254
不要擔心,這個很簡單:高階函數是將另一個函數作爲輸入參數的函數,或者返回/輸出另一個函數([Wikipedia](http://en.wikipedia.org/wiki/Higher -order_function)) – netzwerg