|
Scala example source code file (bug603.scala)
The Scala bug603.scala source code
object 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.