⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bug267.scala

📁 JAVA 语言的函数式编程扩展
💻 SCALA
字号:
package expAbstractData;/** A base class consisting of *   - a root trait (i.e. abstract class) `Exp' with an `eval' function *   - an abstract type `exp' bounded by `Exp' *   - a concrete instance class `Num' of `Exp' for numeric literals */trait Base {  type exp <: Exp;  trait Exp {    def eval: int  }  class Num(v: int) extends Exp { self: exp =>    val value = v;    def eval = value  }}object testBase extends Application with Base {  type exp = Exp;  val term = new Num(2);  Console.println(term.eval);}/** Data extension: An extension of `Base' with `Plus' expressions */trait BasePlus extends Base {  class Plus(l: exp, r: exp) extends Exp { self: exp =>    val left = l;    val right = r;    def eval = left.eval + right.eval  }}/** Operation extension: An extension of `Base' with 'show' methods. */trait Show extends Base {  type exp <: Exp1;  trait Exp1 extends Exp {    def show: String;  }  class Num1(v: int) extends Num(v) with Exp1 { self: exp with Num1 =>    def show = value.toString();  }}/** Operation extension: An extension of `BasePlus' with 'show' methods. */trait ShowPlus extends BasePlus with Show {  class Plus1(l: exp, r: exp) extends Plus(l, r) with Exp1 { self: exp with Plus1 =>    def show = left.show + " + " + right.show  }}

⌨️ 快捷键说明

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