nny*_*thm 9 scala language-design
我在Scala中编写了一个用于对iterables进行排序的特性,并且创建一个可以将其混合的类花了几乎同样的时间来编写特征.为什么设计决定禁止用户编写如下内容:
new List[Int] with SuperAwesomeTrait[Int]?
Run Code Online (Sandbox Code Playgroud)
现在如果我想这样做,我需要做一些奇怪的黑客,比如
class StupidList extends LinearSeq {
val inner = List()
/* reimplement list methods by calling into inner */
}
Run Code Online (Sandbox Code Playgroud)
然后
new StupidList[Int] with SuperAwesomeTrait[Int].
Run Code Online (Sandbox Code Playgroud)
因为如果我写
someList match {
case Cons(head, tail) => whatever
case Nil => somethingElse
}
Run Code Online (Sandbox Code Playgroud)
我不希望我的逻辑被一个新的,意想不到的子类打破.
我怀疑你正在尝试使用子类化来解决问题,这可以用implicits更好地解决.