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 + -
显示快捷键?