lazy-exprs.scala

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

SCALA
96
字号
object TestExpressions {  def patmatchScrut {    lazy val z1: Option[String] = { println("forced <z1>"); Some("lazy z1") }        val res = z1 match {      case Some(msg) => msg      case None => "failed"    }    print("lazy val in scrutinee: ")    if (res == "lazy z1")      println("ok")    else      println("failed")  }  def patmatchCase {    val t: Option[String] = Some("test")    val res = t match {      case Some(msg) =>         lazy val z1 = { println("forced <z1>"); "lazy z1" }        z1          case None => "failed"    }    print("lazy val in case: ")    if (res == "lazy z1")      println("ok")    else      println("failed")  }  def patmatchPat {    lazy val Z1 = { println("forced <z1>"); "lazy Z1" }    print("lazy val in case: ")    val t: Option[String] = Some("lazy Z1")    t match {      case Some(Z1) =>         println("ok")          case None =>        println("failed")    }  }  def ifcond {    lazy val z1 = { println("forced <z1>"); "lazy z1" }    print("lazy val in if condition: ")    if (z1 == "lazy z1")      println("ok")    else      println("failed")  }  lazy val LazyField = { println("forced LazyField"); "LazyField" }  def testPatMatchField {    print("lazy val in pattern: ")    val t: Option[String] = Some("LazyField")    t match {      case Some(LazyField) =>         println("ok")          case None =>        println("failed")    }  }      lazy val (x, y) = ({print("x"); "x"}, {print("y"); "y"})  def testPatLazyVal {    println("lazy val with patterns:")    print("x and y: ")    println("(" + x + ", " + y + ")")    lazy val (x1, y1) = ({print("x1"); "x1"}, {print("y1"); "y1"})    print("x1 and y1: ")    println("(" + x1 + ", " + y1 + ")")  }  def test {    patmatchScrut    patmatchCase    patmatchPat    ifcond    testPatMatchField    testPatLazyVal  }}object Test extends Application {  TestExpressions.test}

⌨️ 快捷键说明

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