Lei ha ragione, le seguenti compilazioni:
type MyType = Int => Boolean
def positive(x: Int) = x > 0
val fun: MyType = positive
fun(42) //yields true
Qui si dichiara tipo alias dicendo che MyType
equivalente a una funzione che prende Int
e restituisce Boolean
. Quindi crei un metodo che corrisponde a tale dichiarazione. Infine, assegni questo metodo a una variabile del tipo MyType
. Compila e funziona bene.
Si noti che questo è solo un alias, non un tipo nuovo:
trait MyType2 extends (Int => Boolean)
val fun2: MyType2 = positive _
error: type mismatch;
found : Int => Boolean
required: MyType2
val fun2: MyType2 = positive _
^
fonte
2012-09-28 09:49:57
Si noti che 'Int => boolean' è _not_ una funzione di ordine superiore (anche se il frammento di deriva dal [Coursera di] (http://www.coursera.org/course/progfun) "Settimana 2: funzioni di ordine superiore" assegnazione ;-)) – netzwerg
@ netzwerg sì, sembra im trovando anche le cose "semplici" difficili. – user701254
Non preoccuparti, questo è davvero semplice: le funzioni di ordine superiore sono funzioni che prendono un'altra funzione come parametro di input o restituiscono/emettono un'altra funzione ([Wikipedia] (http://en.wikipedia.org/wiki/Higher -order_function)) – netzwerg