我想制作一个特性,它将一些属性添加到类中并使连锁方法成为可能。在Scala 2.8.1中测试。实现支持方法链接的Scala特征的最佳实践
trait SomeProperty {
var prop : String = "default"
def setProp(s: String) = {
prop = s
this
}
}
sealed abstract class Value
case class IntegerValue(v: Int) extends Value
case class FloatValue(v: Float) extends Value with SomeProperty {
def foo() = { println("I'm foo.") }
}
case object UnknownValue extends Value with SomeProperty {
def bar() = { println("I'm bar.") }
}
scala> val x = UnknownValue
scala> x.setProp("test").bar()
<console>:10: error: value bar is not a member of SomeProperty
x.setProp("test").bar()
在这种情况下最常见的做法是什么? (类型安全的方式是首选)
这是更好的。 – lscoughlin 2011-01-28 09:05:04