Deje que haya clases Fruit
, Orange
y Apple
.Pregunta acerca de las clases de tipo en Scala
abstract class Fruit
class Orange extends Fruit
class Apple extends Fruit
Ahora quiero agregar funcionalidad a write
ambos tipos Orange
y Apple
. Utilizando el tipo de patrón de clase que pueda hacer lo siguiente:
trait Writer[T] {def write(t:T)}
implicit object AppleWriter extends Writer[Apple] {
def write(a:Apple) {println("I am an apple!")}
}
implicit object OrangeWriter extends Writer[Orange] {
def write(o:Orange) {println("I am an orange!")}
}
def write[T](t:T)(implicit w:Writer[T]){w.write(t)}
Así que para, tan bueno, pero lo que si quiero definir writeFruits
?
def writeFruits(fruits:List[Fruit]) {for (fruit <- fruits) write(fruit)}
me gustaría writeFruits
a llamar a cualquiera write[Apple]
o write[Orange]
para cada fruit
. Veo que no funciona (y sé por qué) pero quizás Puedo implementar el writeFruits
de todos modos.
¿Puedo implementar writeFruits
de alguna manera?