让有类Fruit
,Orange
和Apple
。
abstract class Fruit
class Orange extends Fruit
class Apple extends Fruit
现在我想为write
这两种类型Orange
和Apple
. 使用类型类模式,我可以执行以下操作:
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)}
所以,很好,但是如果我想定义writeFruits
呢?
def writeFruits(fruits:List[Fruit]) {for (fruit <- fruits) write(fruit)}
我想writeFruits
打电话write[Apple]
给write[Orange]
每个fruit
. 我看到它不起作用(我知道为什么),但也许我可以实现writeFruits
。
我可以writeFruits
以某种方式实施吗?