caseclasses.scala

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

SCALA
58
字号
case class Foo(x: int)(y: int)case class Barcase class Baz(override val x: Int, y: Int) extends Foo(x)(y)abstract class Baseabstract case class Abs(x: Int) extends Baseobject M {  abstract case class C(x: String) {}  object C extends (String => C) {    def apply(x: String): C = {      println("creating C("+x+")")      new C(x) {}    }  }}object Test extends Application {  def Abs(x: Int) = new Abs(x * 2){}  Abs(2) match {    case Abs(4) => ;  }  def fn[a,b](x: a => b) = x;  val f = fn(Foo(1))  (f(2): AnyRef) match {    case Foo(1) => Console.println("OK")    case Bar() => Console.println("NO")  }  (Baz(1, 2): AnyRef) match {    case Baz(1, 2) => ;    case Bar() => Console.println("NO")  }  try {    Bar() productElement 3    throw new NullPointerException("duh")  } catch {    case x:IndexOutOfBoundsException =>  }  M.C("hi") match {    case M.C("hi") => println("OK")    case _ => println("NO")  }  try {    f(2) productElement 3    throw new NullPointerException("duh")  } catch {    case x:IndexOutOfBoundsException =>  }}

⌨️ 快捷键说明

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