シングルトンオブジェクト
https://docs.scala-lang.org/ja/tour/singleton-objects.html
Scalaでは全てがオブジェクトで値である。
よってScalaのクラスにはstaticメソッドに相当するものを作ることができない。
このユースケースをカバーするものとして、objectキーワードで直接オブジェクトを宣言できる。
code:scala
package logging
object Logger {
def info(message: String): Unit = println(s"INFO: $message")
}
クラスと同じ名前のオブジェクトはコンパニオンオブジェクトと呼ばれ特別扱いされる。
プライベートなメンバ変数にアクセスできる
いわゆるstaticメソッドに相当するものの置き場になる
applyメソッドはコンストラクタ扱いされる