object
object はいわゆるシングルトンを作るための構文。
- シングルトンであり、
C# や Java で言うところの static class ではない
- なので、
trait や interface を継承できる
- 他言語との最大の違いは、
class と名前が同じものを宣言できる。
class, case class と同名の object はコンパニオンオブジェクトと呼ばれる。
class Foo {}
object Foo {
val VALUE: Type = "FooBar"
}
コンパニオンオブジェクト
class, case class と同じ名前の object
object の特殊なメソッド
apply メソッド
[object 名](引数) という形で呼び出すことのできるメソッド
object 内で apply という名前でメソッドを定義すればいい
- コンパニオンオブジェクト内で定義してファクトリーメソッドとして使われることが多い
List(item1, item2, ...) でリストが生成される仕掛けはこれ
object List[A] {
def apply(items: A*): List[A] = { new List 的なコード }
}
val list: List[String] = List("Foo", "Bar")