📄 arrays.scala
字号:
//############################################################################// 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 + -