bug657.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 52 行

SCALA
52
字号
abstract class BaseList {  type Node <: NodeImpl;  implicit def convertNode(ni : NodeImpl) = ni.asInstanceOf[Node];  abstract class NodeImpl;}abstract class LinkedList extends BaseList {  type Node <: NodeImpl;  trait NodeImpl extends super.NodeImpl;}trait OffsetList extends LinkedList {  type Node <: NodeImpl;  trait NodeImpl extends super.NodeImpl;}trait PriorityTree extends BaseList {  type Node <: NodeImpl;  trait NodeImpl extends super.NodeImpl {    def chop : Node = this;  }}trait PrecedenceParser  extends LinkedList with PriorityTree {  type Node <: NodeImpl;  trait NodeImpl extends super[LinkedList].NodeImpl with super[PriorityTree].NodeImpl;}trait Matcher extends PrecedenceParser {  type Node <: NodeImpl;  trait NodeImpl extends super.NodeImpl;  type Matchable <: Node with MatchableImpl;  implicit def convertMatchable(m : MatchableImpl) = m.asInstanceOf[Matchable];  trait MatchableImpl extends NodeImpl {    override def chop : Node = {      Console.println("passed"); super.chop;    }  }}class Test1 extends OffsetList with Matcher {  type Node = NodeImpl;  trait NodeImpl extends super[OffsetList].NodeImpl with super[Matcher].NodeImpl;  class MatchableImpl extends super.MatchableImpl with NodeImpl;  type Matchable = MatchableImpl;}object Test extends Application {  val test = new Test1;  val m = new test.MatchableImpl;  m.chop;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?