¿Cuál es la mejor forma de agrupar funciones de utilidad que no pertenecen a una clase? En Ruby, los habría agrupado en un módulo. ¿Debo usar rasgos en Scala para el mismo efecto u objetos?¿Forma preferida de agrupar funciones de utilidad en Scala?
Respuesta
Normalmente, pongo las funciones de utilidad que son semánticamente diferentes en rasgos diferentes y creo un objeto para cada rasgo, p.
trait Foo {
def bar = 1
}
object Foo extends Foo
De esa manera soy más flexible. Puedo importar las funciones de utilidad a través de una declaración import
o a través de with
en la declaración de clase. Además, puedo agrupar fácilmente diferentes rasgos de utilidad en un nuevo objeto para simplificar los enunciados de importación para las funciones de utilidad más comúnmente usadas, p.
object AllMyUtilites extends Foo with Foo2
Características si desea que se mezclen con las clases que van a usarlo. Objetos si solo quiere importarlos.
Si tiene funciones de utilidad para diferentes SO, ¿no sería mejor tenerlas como características? De esa manera, algún comportamiento podría ser heredado? – Geo
@Geo, ¿qué quieres decir? La misma interfaz con diferentes implementaciones (una para cada sistema operativo)? Entonces es mucho más que funciones de utilidad, es más una cuestión de diseño (tal vez un requisito). – pedrofurla
Empaquetar objetos o simplemente objetos.
Véase, por ejemplo, Scala.Predef
y scala.math
.
¿Qué sucede si desea aprovechar el subtipo de polimorfismo? –
- 1. Forma preferida para crear una lista de Scala
- 2. Organización de funciones de utilidad en C++
- 3. Forma preferida de #! en scripts de shell
- 4. Prácticas elegantes en "funciones de utilidad aleatorias"
- 5. ¿Cuál es la forma preferida de usar las colecciones paralelas en Scala?
- 6. Forma preferida de crear enlaces con backbone.js
- 7. ¿Forma preferida de combinar PHP y HTML?
- 8. forma preferida de ajuste/matrices que regresan
- 9. Funciones de elevación en scala
- 10. ¿Cuál es la forma preferida de encadenar las funciones de Underscore.js?
- 11. Forma simple de agrupar elementos en cubos
- 12. ¿Trabajando con el marco de la entidad, forma preferida?
- 13. Funciones protegidas en Scala
- 14. ¿Dónde deberían vivir las funciones de utilidad en Django?
- 15. Forma preferida de hacer configuraciones regionales en la Plataforma Haskell
- 16. Forma preferida de declarar métodos en una clase
- 17. Programación de DirectX en Windows, ¿cuál es la forma preferida?
- 18. Scala: funciones normales vs funciones agrupadas?
- 19. Funciones vs métodos en Scala
- 20. Uso de las funciones lambda _ en Scala
- 21. Uso de la forma preferida de combinar Autofac y Dapper
- 22. Forma preferida de desarrollo de aplicaciones web con m2eclipse
- 23. ¿Cuál es la forma preferida de eventos de burbujas?
- 24. Ruby forma de agrupar anagramas en matriz de cadenas
- 25. puede probar funciones anidadas en scala?
- 26. ¿Cuál es la forma preferida de preasignar matrices NumPy?
- 27. ¿Forma preferida de conectar AudioEffect a la mezcla global?
- 28. ¿Qué forma preferida de cablear dependencias usando el contenedor IoC?
- 29. ¿Forma preferida de mostrar anclajes que no necesitan un href?
- 30. ¿Cuál es la forma preferida de configurar una aplicación mono?
Considero 'with' una mala práctica, ya que contamina los tipos, da menos flexibilidad (puede omitir y renombrar con' import's), y nunca necesita que sus clases sean también clases de utilidad, solo cuando agrupa tus utilidades juntas. Entonces, me quedaría con 'object's o usar' with' solo para agrupar. – Tvaroh
Esto es genial, estaba pensando si tener un rasgo _o_ un objeto, ¡pero puede tener _ambas_ !! =) – dividebyzero