Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

221
Vistas
Decorar por delegación (como kotlin) en Scala

En kotlin existe el patrón ' Decorar por Delegación '. ¿Hay alguna manera de lograrlo de manera elegante en Scala?

Aquí hay un ejemplo de código kotlin:

 interface Doo{ fun a(): Unit fun b(): Unit } class Goo:Doo { override fun a() { println("goo a") } override fun b() { println("goo b") } } class Moo(doo: Doo):Doo by doo{ override fun b() { println("mooooooo") } } fun main() { val m = Moo(Goo()) ma();mb() }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En Scala 2, por lo que sé, no puedes lograr esto. Sin embargo, es posible en Scala 3 con export :

 trait Foo { def a: Int def b: String } trait Bar { def a: Int } def decorateAsFoo(bar: Bar): Foo = new Foo { export bar._ // export all bar methods/values/types in this Foo impl override def b: String = "decorated" } decorateFoo(new Bar { override def a: Int = 10 })

(Ver scastie )

Como puede ver con export , ni siquiera tiene que crear una class nombres separada (aunque podría hacerlo si lo desea) ni tiene que tener ningún tipo de relación de subtipificación entre el decorador y el decorado, siempre que el resultado tenga todos las definiciones necesarias exportadas o implementadas manualmente.

En Scala 2 (que yo sepa), lo mejor con lo que puede contar es la conversión de un tipo de datos a otro tipo de datos con un esquema similar, a través de bibliotecas como Chimney . Sin embargo, no conozco ninguna biblioteca que realice dicha conversión entre clases que almacenan el comportamiento.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda