【发布时间】:2014-06-06 19:33:21
【问题描述】:
我发现了一个有趣的 Scala 实现的 Builder 模式,但我不明白几行是什么意思:
case class Built(a:Int, b:String){}
trait Status
trait Done extends Status
trait Need extends Status
class Builder[A<:Status,B<:Status] private(){
private var built = Built(0,"")
def setA(a0:Int)={
built = built.copy(a=a0)
this.asInstanceOf[Builder[Done,B]]
}
def setB(b0: String) = {
built = built.copy(b = b0)
this.asInstanceOf[Builder[A,Done]]
}
def result(implicit ev: Builder[A,B] <:< Builder[Done,Done]) = built
}
object Builder{
def apply() = new Builder[Need,Need]
}
1) private() 在class Builder[A<:Status,B<:Status] private() 类声明中是什么意思?
2) 结果函数中implicit ev: Builder[A,B] <:< Builder[Done,Done]是什么意思?
【问题讨论】:
标签: scala design-patterns