matthias4.scala

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

SCALA
85
字号
/*object A requires B {    B.X getX() {        return B.getX();    }    void setX(B.X x) {}}object B {    class X {}    X getX() {        return new X();    }    void setX(X x) {}}object C requires B {    object A;    void test() {        A.setX(B.getX());    }}*/trait _a extends AnyRef with _b {    val a: _a;    val A: A;    type A <: a.AObject;    trait AObject {        def getX(): B.X;        def setX(x: B.X): Unit;    }}trait a123 extends AnyRef with _a with _b {    val a: this.type = this;    val A: A = new A();    class A() extends AObject {        def getX(): B.X = B.getX();        def setX(x: B.X) = B.setX(x);    }}trait _b {    val b: _b;    val B: B;    type B <: b.BObject;    trait BObject {        type X;        def getX(): X;        def setX(x: X): Unit;    }}abstract class b() extends AnyRef with _b {    val b: this.type = this;    val B: B = new B();    class B() extends BObject {        class X() {}        def getX(): X = new X();        def setX(x: X) = ();    }}trait _m {    val m: _m;    val M: M;    type M <: m.MObject;    trait MObject {}}abstract class m() extends AnyRef with _m with _b {    val m: this.type = this;    val M: M = new M();    class M() extends MObject with a123 with Linker {        def test() = {            val x: B.X = B.getX();            A.setX(x);        }    }    trait Linker {        val b: m.this.b.type = m.this.b;        val B: m.this.B.type = m.this.B;        type B = m.this.B;        val m: m.this.m.type = m.this.m;        val M: m.this.M.type = m.this.M;        type M = m.this.M;    }}

⌨️ 快捷键说明

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