El primero es un truco para definir un método estático sin ser miembro de ninguna otra clase gobernante (contenedor). En realidad, ‘myfunction’ es un Object (un singleton) que implementa el método ‘apply ()’ permitiendo así que ‘myfunction ()’ llame semánticamente. Y una ilustración de funciones de primera clase en Scala [1] a través de la extensión literal `int => int ‘. (pura genialidad).
Este último no se compilará en absoluto si no es miembro de otro objeto y recuerde que no hay métodos estáticos en Scala. (Hay algo mejor).
Entonces, en lugar de tener un contenedor, ¿por qué no hacemos que nuestro método estático sea “autocontenido” ? El primero es un método estático autónomo. Si no tuviéramos esta flexibilidad en Scala, la implementación de un método estático sería tener un objeto complementario [2] (o un objeto de utilidad de propósito general) e implementar el método allí. Un código de muestra a continuación.
- ¿Cuál es la diferencia entre un software integrado y un ingeniero de hardware en términos de trabajo realizado?
- Cómo hacer de Windows 10 un entorno de desarrollador
- ¿Cuáles son algunos productos de software o web que se consideraron tan buenos que se detuvo todo desarrollo futuro, por temor a que las características adicionales degraden el producto?
- Cómo salir del desastre que hice en mi sucursal local de git
- ¿Hay diferencias en cómo los equipos están motivados en todo el mundo? ¿Si es así, Que son?
Definición:
Objeto Utilidades { def mifunción (n: Int): Int = { // haciendo algo realmente importante aquí. // negocio serio. } }
Uso:
val seriousResult = Utilities.myfunction (42);
[1] Programación en Scala – Odersky, Spoon, Venners – Página 177, Sección 8.3 “Funciones de primera clase”
[2] Programación en Scala – Odersky, Spoon, Venners – Página 99, Sección 4.3 “Objetos Singleton”