basyura's blog

あしたになったらほんきだす。

シングルトンオブジェクト

今日もコップ本

Scala は、クラスが静的メンバー(static member)を持てないという点で Java よりもオブジェクト指向である。その代わりに、Scala はシングルトンオブジェクト(singleton objects)を持っている。シングルトンオブジェクトの定義は、class キーワードの代わりに object キーワードを使っていることを除けば、クラス定義とよく似ている。

とな。

import scala.collection.mutable.Map
object Test {
  private val cache = Map[String , String]()
  def check(s: String): String = {
    if(!cache.contains(s)) {
      println("cache -> " + s)
      cache += (s -> (s + "-----"))
    }
    cache(s)
  }
}

println(Test.check("a"))
println(Test.check("a"))

実行結果

cache -> a
a-----
a-----

慣れないのもあってなかなか思うように書けない (汗