richs.scala
来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 140 行
SCALA
140 行
trait RichTest { val s1 = """abc""" val s2 = """abc\txyz\n""" val s3 = """abc xyz""" val s4 = """abc |xyz""" val s5 = """abc #xyz""" def getObjectName: String = { val cn = this.getClass().getName() cn.substring(0, cn.length-1) } def length[A](it: Iterator[A]) = it.toList length def length[A](it: Iterable[A]) = it.toList length def run: Unit}object RichCharTest1 extends RichTest { def run { println("\n" + getObjectName + ":") println('\40'.isWhitespace) println('\011'.isWhitespace) println('1'.asDigit == 1) println('A'.asDigit == 10) }}// object RichCharTest2 extends RichTest {// case class C(s: String) {// private val it = s.elements// private var c: Char = _// def ch(): Char = c// def nextch(): Unit = { c = if (it.hasNext) it.next else ';' }// def err(msg: String) = println(msg)// nextch()// }// def run {// println("\n" + getObjectName + ":")// val c1 = C("x4A;")// val s1 = xml.Utility.parseCharRef(c1.ch, c1.nextch, c1.err)// val c2 = C("74;")// val s2 = xml.Utility.parseCharRef(c2.ch, c2.nextch, c2.err)// println(s1 == s2)// }// }object RichIntTest extends RichTest { private val n = 10 private val m = -2 def run { println("\n" + getObjectName + ":") println(length(0 until n)) println(length(0 to n)) println(length(m until n)) println(length(m to n)) println(length(n until m)) println(length(n to m)) println(16.toBinaryString) // should be "10000" println(16.toHexString) // should be "10" println(16.toOctalString) // should be "20" println(65537.toHexString) // should be "10001" println((-1).toHexString) // should be "ffffffff" }}object RichStringTest1 extends RichTest { def run { println("\n" + getObjectName + ":") println("s1: " + s1) println("s2: " + s2) println("s3: " + s3) println("s4: " + s4) println("s5: " + s5) }}object RichStringTest2 extends RichTest { def run { println("\n" + getObjectName + ":") Console.print("s1: "); s1.lines foreach println Console.print("s2: "); s2.lines foreach println Console.print("s3: "); s3.lines foreach println Console.print("s4: "); s4.lines foreach println Console.print("s5: "); s5.lines foreach println }}object RichStringTest3 extends RichTest { def run { println("\n" + getObjectName + ":") println("s1: " + s1.stripLineEnd) println("s2: " + s2.stripLineEnd) println("s3: " + s3.stripLineEnd) println("s4: " + s4.stripLineEnd) println("s5: " + s5.stripLineEnd) }}object RichStringTest4 extends RichTest { def run { println("\n" + getObjectName + ":") println("s1: " + s1.stripMargin) println("s2: " + s2.stripMargin) println("s3: " + s3.stripMargin) println("s4: " + s4.stripMargin) println("s5: " + s5.stripMargin) }}object RichStringTest5 extends RichTest { def run { println("\n" + getObjectName + ":") println("s1: " + s3.stripMargin('#')) println("s2: " + s3.stripMargin('#')) println("s3: " + s3.stripMargin('#')) println("s4: " + s4.stripMargin('#')) println("s5: " + s5.stripMargin('#')) }}object RichStringTest6 extends RichTest { def run { println("a:b:c:d".split(':').toList) println("a.b.c.d".split('.').toList) println("a$b$c$d".split('$').toList) println("a^b^c^d".split('^').toList) println("a\\b\\c\\d".split('\\').toList) println("a:b:c.d".split(Array(':', '.')).toList) println("a:b.c$d".split(Array(':', '.', '$')).toList) }}/** xxx */object Test { def main(args: Array[String]) { RichCharTest1.run //RichCharTest2.run RichIntTest.run RichStringTest1.run RichStringTest2.run RichStringTest3.run RichStringTest4.run RichStringTest5.run RichStringTest6.run }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?