シングルトンオブジェクトを IntelliJ の Scala Worksheet で確認する

Singleton objects are sort of a shorthand for defining a single-use class, which can’t directly be instantiated, and a val member at the point of definition of the object, with the same name. Indeed, like vals, singleton objects can be defined as members of a trait or class, though this is atypical. (TOUR OF SCALA, SINGLETON OBJECTS)

シングルトンオブジェクトは1回しか使われないクラスを便利に定義するための省略表現のようなものである。シングルトンオブジェクトはインスタンス化できない。object キーワードで定義した時点でシングルトンオブジェクトはクラス定義と同時にクラスと同じ名前の val (代入不可) メンバを生成する。変則的な使い方としては、シングルトンオブジェクトは trait や class のメンバとしても利用できる。

Singleton Objects | Scala Documentation

IntelliJScala Worksheet を使って class 定義を継承した object を作ってみた例。object と同じ名前の FooCompany というクラスが同時に定義されているのが getClass から確認できる。

f:id:kyagi:20180116235057p:plain

「シングルトン」の名前の通り、同じ名前のオブジェクトを二回定義することはできない。

f:id:kyagi:20180116235424p:plain

Safari Books Online で他の Scala 本を読んでいると以下のような説明も見つかった。

The object keyword creates a new singleton type, which is like a class that only has a single named instance. (Chapter2 2. Getting started with functional programming in Scala, Functional Programming in Scala)

シングルトンオブジェクトとはインスタンスを一つしか持たないクラスのようなものである。

個人的に PiS3 は読み物として少し難しく感じるため、Safari Books Online で他の Scala 本を理解の補足として読むのが習慣になっている。Funnctional Programming in Scala, Scala for the Impatinet, Pragmatic Scala を並行して読んでいる。(。・ω・。)