Uso de Traits en Scala: Concepto y Ejemplos Prácticos

Clase 19 de 36Curso de Scala básico

Existe un concepto en lenguajes de programación que se conoce como Mixin. Un mixin es algo que contiene funcionalidades que luego pueden ser juntadas en una sola entidad.

Los Traits son la manera de aplicar este concepto en Scala. Dentro de un Trait podremos colocar cualquier implementación de funciones y/o valores (o hablando en términos de programación orientada a objetos, métodos y/o atributos), esta implementación puede ser mezclada en un solo objeto también (lo que se suele llamar como herencia múltiple en programación orientada a objetos).

Representación de un trait

Un Trait se puede definir de la siguiente manera:

// Definición de un trait trait ejemplo { val valor = 5 def funcion(x: Int) = x * x } // Para instanciarse debe usarse un objeto object ejemplo extends ejemplo

Aunque los Traits son similares a las clases, se suele preferir en Scala para agrupar código. En vez que tener funciones sueltas, normalmente las agruparemos dentro de Traits.

Al igual que con las clases, los Traits nos permitirán definir tipos de datos.

También se puede definir un trait usando la palabra sealed trait . Hacerlo así que evita que puedan instanciarse objetos usando ese trait por fuera del archivo de su definición. Sí, en Scala es posible escribir muchas definiciones ya sea de clases, traits etc, en el mismo archivo (en Java por ejemplo, eso no se puede ya que el lenguaje nos obliga a usar un archivo por clase).

El uso de los sealed traits es útil para decirle al compilador que no debe hacer una búsqueda en todo el código para saber dónde se está usando, mejorando los tiempos de compilación.

Más adelante veremos en más detalle uno de los usos más importantes que se les da a los sealed traits.