scala 入門(5)
阿新 • • 發佈:2018-12-23
2015-05-28
周海漢 2015.5.29 0點
scala mixin模式續
上一篇文章用水果為例,滿足了老闆用禮儀專家給的建議,給每種水果貼上是否送禮的標籤。
但水果怎麼吃,一些不產水果的地方的人可能不知道。因此又請教了農業專家。不同水果給出不同說明。
[email protected] % cat mixin2.scala
class Fruit(name:String) { def nm=name } trait Gift { def gift ={ true } } trait NoGift { def gift ={ false } } trait Peel { def eat = { "peel"} } trait Husk{ def eat = { "husk"} } class Apple(name:String) extends Fruit(name) with Gift with Peel class Pear(name:String) extends Fruit(name) with NoGift with Peel class Orange(name:String) extends Fruit(name) with Gift with Husk object BuyFruit{ def main(arr : Array[String]) { println("mixin混入程式設計示例。蘋果削皮吃,適合送禮;梨削皮,不適合送禮;橘子剝皮,適合送禮") val a = new Apple("apple") println(a.nm ) println(a.gift) println(a.eat) val p = new Pear("pear") println(p.nm ) println(p.gift) println(p.eat) val o = new Orange("orange") println(o.nm ) println(o.gift) println(o.eat) } }
用mixin的方式,很方便的加上了水果的吃法。注意mixin多基類注入時,採用多個with實現。
另外就是父類的引數的初始化方式。
[email protected] % scalac mixin2.scala [email protected] % scala -classpath . BuyFruit mixin混入程式設計示例。蘋果削皮吃,適合送禮;梨削皮,不適合送禮;橘子剝皮,適合送禮 apple true peel pear false peel orange true husk
如非註明轉載, 均為原創. 本站遵循知識共享CC協議,轉載請註明來源