2015-05-28
周海汉 2015.5.29 0点
scala mixin模式续
上一篇文章用水果为例,满足了老板用礼仪专家给的建议,给每种水果贴上是否送礼的标签。
但水果怎么吃,一些不产水果的地方的人可能不知道。因此又请教了农业专家。不同水果给出不同说明。
zhh@test % 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实现。
另外就是父类的参数的初始化方式。
zhh@test % scalac mixin2.scala zhh@test % scala -classpath . BuyFruit mixin混入编程示例。苹果削皮吃,适合送礼;梨削皮,不适合送礼;橘子剥皮,适合送礼 apple true peel pear false peel orange true husk
如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源
FEATURED TAGS
css
vc6
http
automake
linux
make
makefile
voip
乱码
awk
flash
vista
vi
vim
javascript
pietty
putty
ssh
posix
subversion
svn
windows
删除
编译
多线程
wxwidgets
ie
ubuntu
开源
c
python
bash
备份
性能
scp
汉字
log
ruby
中文
bug
msn
nginx
php
shell
wordpress
mqueue
android
eclipse
java
mac
ios
html5
js
mysql
protobuf
apache
hadoop
install
iocp
twisted
centos
mapreduce
hbase
thrift
tutorial
hive
erlang
lucene
hdfs
sqoop
utf8
filter
草原
yarn
ganglia
恢复
scrapy
django
fsimage
flume
tail
flume-ng
mining
scala
go
kafka
gradle
cassandra
baas
spring
postgres
maven
mybatis
mongodb
https
nodejs
镜像
心理学
机器学习
Keras
theano
anaconda
docker
spark
akka-http
json
群论
区块链
加密
抽象代数
离散对数
同余
欧拉函数
扩展欧几里德算法
ES6
node-inspect
debug
win10
vscode
挖矿