|
Scala example source code file (bug603.scala)
The Scala bug603.scala source codeobject forceDelay { class Susp[+A](lazyValue: => A) extends Function0[A] { private var func: () => Any = () => lazyValue private var value: Any = null override def apply() = { if (func != null) { value = func().asInstanceOf[A] func = null } value.asInstanceOf[A] } override def toString() = if (func == null) "Susp(" + value + ")" else "Susp(?)" } def delay[A](value: => A) = new Susp[A](value) implicit def force[A](s: Susp[A]): A = s() } object Test { import forceDelay._ def main(args: Array[String]) = { val s: Susp[Int] = delay { Console.println("evaluating..."); 3 } Console.println("s = " + s) Console.println("s() = " + s()) Console.println("s = " + s) Console.println("2 + s = " + (2 + s)) } } Other Scala examples (source code examples)Here is a short list of links related to this Scala bug603.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.