1. 程式人生 > >scala 入門(5)

scala 入門(5)

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協議,轉載請註明來源