Tiene usted razón, las siguientes compilaciones:
type MyType = Int => Boolean
def positive(x: Int) = x > 0
val fun: MyType = positive
fun(42) //yields true
Aquí declaran tipo de alias diciendo que MyType
equivalente a una función tomando Int
y devolviendo Boolean
. Luego, crea un método que coincida con dicha declaración. Finalmente asigna este método a una variable del tipo MyType
. Se compila y funciona bien.
Tenga en cuenta que esto es sólo un alias, no un tipo nuevo:
trait MyType2 extends (Int => Boolean)
val fun2: MyType2 = positive _
error: type mismatch;
found : Int => Boolean
required: MyType2
val fun2: MyType2 = positive _
^
Tenga en cuenta que 'Int => boolean' _no_ es una función de orden superior (ni siquiera si el fragmento se deriva de [Coursera de] (http://www.coursera.org/course/progfun) "Semana 2: Funciones de orden superior" asignación ;-)) – netzwerg
@netzwerg Sí, parece que estoy encontrando incluso las cosas 'simples' difíciles. – user701254
No se preocupe, esta es realmente simple: las funciones de orden superior son funciones que toman otra función como parámetro de entrada o devuelven/emiten otra función ([Wikipedia] (http://en.wikipedia.org/wiki/Higher) -order_function)) – netzwerg