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

📄 arrays.scala

📁 JAVA 语言的函数式编程扩展
💻 SCALA
📖 第 1 页 / 共 3 页
字号:
//############################################################################// Arrays//############################################################################// $Id: arrays.scala 14478 2008-04-02 11:02:48Z michelou $//############################################################################object Test {  //##########################################################################  // Types  type Strings = List[String]  type Map     = scala.collection.Map[Int, Any]  type HashMap = scala.collection.mutable.HashMap[Int, Any]  type TreeMap = scala.collection.immutable.TreeMap[Int, Any]  //##########################################################################  // Identity Functions  def id_Ta_T[T <: Any    ](x: T): T       = x;  def id_Tr_T[T <: AnyRef ](x: T): T       = x;  def id_To_T[T <: Object ](x: T): T       = x;  def id_Ta_a[T <: Any    ](x: T): Any     = x;  def id_Tr_a[T <: AnyRef ](x: T): Any     = x;  def id_To_a[T <: Object ](x: T): Any     = x;  def id_Tr_r[T <: AnyRef ](x: T): AnyRef  = x;  def id_To_r[T <: Object ](x: T): AnyRef  = x;  def id_To_o[T <: Object ](x: T): Object  = x;  def id_TSa_T [S <: Any    , T <: Array[S]](x: T): T        = x;  def id_TSv_T [S <: AnyVal , T <: Array[S]](x: T): T        = x;  def id_TSr_T [S <: AnyRef , T <: Array[S]](x: T): T        = x;  def id_TSo_T [S <: Object , T <: Array[S]](x: T): T        = x;  def id_TSm_T [S <: Map    , T <: Array[S]](x: T): T        = x;  def id_TSn_T [S <: Strings, T <: Array[S]](x: T): T        = x;  def id_TSa_Ss[S <: Any    , T <: Array[S]](x: T): Array[S] = x;  def id_TSv_Ss[S <: AnyVal , T <: Array[S]](x: T): Array[S] = x;  def id_TSr_Ss[S <: AnyRef , T <: Array[S]](x: T): Array[S] = x;  def id_TSo_Ss[S <: Object , T <: Array[S]](x: T): Array[S] = x;  def id_TSm_Ss[S <: Map    , T <: Array[S]](x: T): Array[S] = x;  def id_TSn_Ss[S <: Strings, T <: Array[S]](x: T): Array[S] = x;  def id_TSa_a [S <: Any    , T <: Array[S]](x: T): Any      = x;  def id_TSv_a [S <: AnyVal , T <: Array[S]](x: T): Any      = x;  def id_TSr_a [S <: AnyRef , T <: Array[S]](x: T): Any      = x;  def id_TSo_a [S <: Object , T <: Array[S]](x: T): Any      = x;  def id_TSm_a [S <: Map    , T <: Array[S]](x: T): Any      = x;  def id_TSn_a [S <: Strings, T <: Array[S]](x: T): Any      = x;  def id_TSa_r [S <: Any    , T <: Array[S]](x: T): AnyRef   = x;  def id_TSv_r [S <: AnyVal , T <: Array[S]](x: T): AnyRef   = x;  def id_TSr_r [S <: AnyRef , T <: Array[S]](x: T): AnyRef   = x;  def id_TSo_r [S <: Object , T <: Array[S]](x: T): AnyRef   = x;  def id_TSm_r [S <: Map    , T <: Array[S]](x: T): AnyRef   = x;  def id_TSn_r [S <: Strings, T <: Array[S]](x: T): AnyRef   = x;  def id_TSa_o [S <: Any    , T <: Array[S]](x: T): Object   = x;  def id_TSv_o [S <: AnyVal , T <: Array[S]](x: T): Object   = x;  def id_TSr_o [S <: AnyRef , T <: Array[S]](x: T): Object   = x;  def id_TSo_o [S <: Object , T <: Array[S]](x: T): Object   = x;  def id_TSm_o [S <: Map    , T <: Array[S]](x: T): Object   = x;  def id_TSn_o [S <: Strings, T <: Array[S]](x: T): Object   = x;  def id_Sas_Ss[S <: Any    ](xs: Array[S]): Array[S] = xs;  def id_Svs_Ss[S <: AnyVal ](xs: Array[S]): Array[S] = xs;  def id_Srs_Ss[S <: AnyRef ](xs: Array[S]): Array[S] = xs;  def id_Sos_Ss[S <: Object ](xs: Array[S]): Array[S] = xs;  def id_Sms_Ss[S <: Map    ](xs: Array[S]): Array[S] = xs;  def id_Sns_Ss[S <: Strings](xs: Array[S]): Array[S] = xs;  def id_Sas_a [S <: Any    ](xs: Array[S]): Any      = xs;  def id_Svs_a [S <: AnyVal ](xs: Array[S]): Any      = xs;  def id_Srs_a [S <: AnyRef ](xs: Array[S]): Any      = xs;  def id_Sos_a [S <: Object ](xs: Array[S]): Any      = xs;  def id_Sms_a [S <: Map    ](xs: Array[S]): Any      = xs;  def id_Sns_a [S <: Strings](xs: Array[S]): Any      = xs;  def id_Sas_r [S <: Any    ](xs: Array[S]): AnyRef   = xs;  def id_Svs_r [S <: AnyVal ](xs: Array[S]): AnyRef   = xs;  def id_Srs_r [S <: AnyRef ](xs: Array[S]): AnyRef   = xs;  def id_Sos_r [S <: Object ](xs: Array[S]): AnyRef   = xs;  def id_Sms_r [S <: Map    ](xs: Array[S]): AnyRef   = xs;  def id_Sns_r [S <: Strings](xs: Array[S]): AnyRef   = xs;  def id_Sas_o [S <: Any    ](xs: Array[S]): Object   = xs;  def id_Svs_o [S <: AnyVal ](xs: Array[S]): Object   = xs;  def id_Srs_o [S <: AnyRef ](xs: Array[S]): Object   = xs;  def id_Sos_o [S <: Object ](xs: Array[S]): Object   = xs;  def id_Sms_o [S <: Map    ](xs: Array[S]): Object   = xs;  def id_Sns_o [S <: Strings](xs: Array[S]): Object   = xs;  //##########################################################################  // Generic Checks  type Check[T] = Array[T] => Unit;  var checks: Int = 0;  def check(test0: Boolean, actual: Any, expected: Any) {    val test1: Boolean = actual == expected;    if (!test0 || !test1) {      val s0 = if (test0) "ok" else "KO";      val s1 = if (test1) "ok" else "KO";      val s2 = actual.toString();      val s3 = expected.toString();      error(s0 + " - " + s1 + ": " + s2 + " != " + s3);    }    checks += 1  }  def check_Ta[T <: Any    ](xs: Array[T], l: Int, x0: T, c: Check[T]) {    check(xs.length == l, xs.length, l);    check(xs(0) == x0, xs(0), x0);    c(xs);  }  def check_Tv[T <: AnyVal ](xs: Array[T], l: Int, x0: T, c: Check[T]) {    check(xs.length == l, xs.length, l);    check(xs(0) == x0, xs(0), x0);    check_Ta(xs, l, x0, c);    c(xs);  }  def check_Tr[T <: AnyRef ](xs: Array[T], l: Int, x0: T, c: Check[T]) {    check(xs.length == l, xs.length, l);    check(xs(0) == x0, xs(0), x0);    check_Ta(xs, l, x0, c);    c(xs);  }  def check_To[T <: Object ](xs: Array[T], l: Int, x0: T, c: Check[T]) {    check(xs.length == l, xs.length, l);    check(xs(0) == x0, xs(0), x0);    check_Ta(xs, l, x0, c);    check_Tr(xs, l, x0, c);    c(xs);  }  def check_Tm[T <: Map    ](xs: Array[T], l: Int, x0: T, c: Check[T]) {    check(xs.length == l, xs.length, l)    check(xs(0) == x0, xs(0), x0)    check_Ta(xs, l, x0, c)    check_Tr(xs, l, x0, c)    check_To(xs, l, x0, c)    c(xs)  }  def check_Tn[T <: Strings](xs: Array[T], l: Int, x0: T, c: Check[T]) {    check(xs.length == l, xs.length, l)    check(xs(0) == x0, xs(0), x0)    check_Ta(xs, l, x0, c)    check_Tr(xs, l, x0, c)    check_To(xs, l, x0, c)    c(xs)  }  //##########################################################################  // Values  import Math._  val u0: Unit    = ();  val u1: Unit    = ();  val z0: Boolean = false;  val z1: Boolean = true;  val b0: Byte    = MIN_BYTE;  val b1: Byte    = 1;  val b2: Byte    = MAX_BYTE;  val s0: Short   = MIN_SHORT;  val s1: Short   = 2;  val s2: Short   = MAX_SHORT;  val c0: Char    = MIN_CHAR;  val c1: Char    = '3';  val c2: Char    = MAX_CHAR;  val i0: Int     = MIN_INT;  val i1: Int     = 4;  val i2: Int     = MAX_INT;  val l0: Long    = MIN_LONG;  val l1: Int     = 5;  val l2: Long    = MAX_LONG;  val f0: Float   = MIN_FLOAT;  val f1: Int     = 6;  val f2: Float   = MAX_FLOAT;  val d0: Double  = MIN_DOUBLE;  val d1: Int     = 7;  val d2: Double  = MAX_DOUBLE;  val a0: Unit    = ();  val a1: Boolean = false;  val a2: Int     = 0;  val a3: Null  = null;  val a4: String  = "a-z";  val a5: Symbol  = 'token;  val a6: HashMap = new HashMap();  val a7: TreeMap = scala.collection.immutable.TreeMap.empty[Int, Any];  val a8: Strings = List("a", "z");  val v0: Unit    = ();  val v1: Boolean = false;  val v2: Int     = 0;  val v3: Long    = l2;  val v4: Float   = f2;  val v5: Double  = d2;  val r0: Null  = a3;  val r1: String  = a4;  val r2: Symbol  = a5;  val r3: HashMap = a6;  val r4: TreeMap = a7;  val r5: Strings = a8;  val o0: Null  = r0;  val o1: String  = r1;  val o2: Symbol  = r2;  val o3: HashMap = r3;  val o4: TreeMap = r4;  val o5: Strings = r5;  val m0: Null  = r0;  val m1: HashMap = r3;  val m2: TreeMap = r4;  val n0: Null  = r0;  val n1: Strings = r5;  val n2: Nil.type= Nil;  //##########################################################################  // Specific Checks  def ucheck(xs: Array[Unit   ]): Unit = {    check(xs.length == 2, xs.length, 2);    check(xs(0) == u0, xs(0), u0);    check(xs(1) == u1, xs(1), u1);  }  def zcheck(xs: Array[Boolean]): Unit = {    check(xs.length == 2, xs.length, 2);    check(xs(0) == z0, xs(0), z0);    check(xs(1) == z1, xs(1), z1);  }  def bcheck(xs: Array[Byte   ]): Unit = {    check(xs.length == 3, xs.length, 3);    check(xs(0) == b0, xs(0), b0);    check(xs(1) == b1, xs(1), b1);    check(xs(2) == b2, xs(2), b2);  }  def scheck(xs: Array[Short  ]): Unit = {    check(xs.length == 3, xs.length, 3);    check(xs(0) == s0, xs(0), s0);    check(xs(1) == s1, xs(1), s1);    check(xs(2) == s2, xs(2), s2);  }  def ccheck(xs: Array[Char   ]): Unit = {    check(xs.length == 3, xs.length, 3);    check(xs(0) == c0, xs(0), c0);    check(xs(1) == c1, xs(1), c1);    check(xs(2) == c2, xs(2), c2);  }  def icheck(xs: Array[Int    ]): Unit = {    check(xs.length == 3, xs.length, 3);    check(xs(0) == i0, xs(0), i0);    check(xs(1) == i1, xs(1), i1);    check(xs(2) == i2, xs(2), i2);  }  def lcheck(xs: Array[Long   ]): Unit = {    check(xs.length == 3, xs.length, 3);    check(xs(0) == l0, xs(0), l0);    check(xs(1) == l1, xs(1), l1: Long); // !!! : Long    check(xs(2) == l2, xs(2), l2);  }  def fcheck(xs: Array[Float  ]): Unit = {    check(xs.length == 3, xs.length, 3);    check(xs(0) == f0, xs(0), f0);    check(xs(1) == f1, xs(1), f1: Float); // !!! : Float    check(xs(2) == f2, xs(2), f2);  }  def dcheck(xs: Array[Double ]): Unit = {    check(xs.length == 3, xs.length, 3);    check(xs(0) == d0, xs(0), d0);    check(xs(1) == d1, xs(1), d1: Double); // !!! : Double    check(xs(2) == d2, xs(2), d2);  }  def rcheck(xs: Array[AnyRef ]): Unit = {    check(xs.length == 6, xs.length, 6);    check(xs(0) == r0, xs(0), r0);    check(xs(1) == r1, xs(1), r1);    check(xs(2) == r2, xs(2), r2);    check(xs(3) == r3, xs(3), r3);    check(xs(4) == r4, xs(4), r4);    check(xs(5) == r5, xs(5), r5);  }  def ocheck(xs: Array[Object ]): Unit = {

⌨️ 快捷键说明

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