ネタ記録庫/Scala/Android/sbt-0.11.2

ScalaにもOCamlやF#のようなLazy型が欲しい気がしたのでつくってみた。 †

class Lazy[A](thunk : () => A) {
  lazy val body = thunk()
}
 
object Lazy {
  def lazy_[A](x : => A) = new Lazy(() => x)
  def force[A](x : Lazy[A]) = x.body
}

使用例: †

 import Lazy._
 def calc() = {
   println("calc")
   1+2+3
 }
 val x = lazy_(calc())
 println("start")
 println(force(x))
 println(force(x))
 println(force(x))

実行結果:

start
calc
6
6
6

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-02-03 (金) 19:57:18 (4685d)