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")