En Scala, si defino un método llamado apply
en una clase o un objeto de nivel superior, se llamará a ese método cada vez que añada un par entre paréntesis a una instancia de esa clase, y coloque los argumentos apropiados para apply()
en medio ellos. Por ejemplo:¿Cómo funciona Scala's apply() magic?
class Foo(x: Int) {
def apply(y: Int) = {
x*x + y*y
}
}
val f = new Foo(3)
f(4) // returns 25
Así que, básicamente, object(args)
es sólo azúcar sintáctica para object.apply(args)
.
¿Cómo hace Scala esta conversión?
¿Hay aquí una conversión implícita definida globalmente, similar a las conversiones de tipo implícitas en el objeto Predef (pero diferente en tipo)? ¿O es una magia más profunda? Lo pregunto porque parece que Scala está a favor de la aplicación consistente de un conjunto de reglas más pequeño, en lugar de muchas reglas con muchas excepciones. Esto inicialmente me parece una excepción.
Muy buena explicación, http://stackoverflow.com/questions/9737352/#9738862 –