私は初めてScalaを教えていますが、生徒たちはコンパニオンオブジェクトに含まれる意図的な「しゃれ」が非常に混乱していることに気づいています。次の例を考えてみましょう。
class Stack {
... methods such as push/pop
}
object Stack {
... factory method(s) and possibly others
}
「スタックオブジェクト」や「スタックオブジェクト」、特に「スタックオブジェクト」などの動詞句を使用すると、混乱が生じます。私の生徒は、私がシングルトンオブジェクトStackを意味するのか、Stackクラスのオブジェクトを意味するのかを理解するのに苦労しています。
初心者が理解しやすいように言葉で表現する別の方法を探しています。私は常にStackクラスのオブジェクトを「Stackinstances」または「instancesofStack」と呼ぶことを考えてきましたが、OOにこれらのオブジェクトを呼び出せないように教えようとすると、おかしなことに思えます。シングルトンオブジェクトスタックについて話すときは、常に「シングルトンオブジェクト」または「コンパニオンオブジェクト」というフレーズを使用しようとしていますが、Scalaの構文は、「オブジェクト」という単語のみを使用しているため、そこではうまくいきません。
この場合、Stackの代わりにシングルトンオブジェクトStackFactoryの名前を変更できますが、これは自分のクラスのオプションにすぎず、Scalaにすでに組み込まれている1,000個のコンパニオンオブジェクトのオプションではありません。
編集:
申し訳ありませんが、私の質問では十分に明確ではありませんでした。主な混乱は、コンパニオンオブジェクトを参照する場合には発生しません。その場合、何人かの人が指摘しているように、「コンパニオンオブジェクト」などのフレーズに使用するのは簡単です。代わりに、通常のインスタンスを参照するときに主な混乱が発生します。次に、「スタックオブジェクト」(スタックインスタンスを意味する)または「スタックオブジェクト」(この特定のインスタンスを意味する)と言うと、一部の学生は、私がコンパニオンオブジェクトを意味していると思います。コンパニオンまたはシングルトンという単語。
また、「オブジェクト」という単語は、コンパニオンオブジェクトとともにのみプログラムテキストに表示されるため、混乱がどこから来ているのかを完全によく理解できます。