Я преподаю Scala в первый раз, и мои ученики находят умышленное "наказание", вовлеченное в сопутствующие объекты, очень запутанным. Рассмотрим следующий пример:
class Stack {
... methods such as push/pop
}
object Stack {
... factory method(s) and possibly others
}
Смятение возникает, когда я использую словесные фразы, такие как "объект стека" или "объекты стека" или особенно "объект стека". Мои ученики испытывают трудности с пониманием того, я имею в виду объект Singleton Stack или объекты класса Stack.
Я ищу альтернативные способы вербализации таких вещей, которые новички могут понять легче. Я всегда рассматривал объекты класса Stack как "экземпляры стека" или "экземпляры Stack", но кажется сумасшедшим, когда вы пытаетесь научить OO не иметь возможность называть эти вещи объектами. Я пытаюсь ВСЕГДА использовать фразу "Singleton Object" или "Companion Object", когда речь идет об одном объекте Stack, но синтаксис Scala работает против меня там, потому что он использует только слово "объект".
В этом случае я мог бы переименовать одноэлементный объект StackFactory вместо Stack, но это только опция для моих собственных классов, а не для тысяч и одного сопутствующего объекта, уже встроенного в Scala.
Изменить:
Извините, я не был достаточно ясен в своем вопросе. Основная путаница происходит НЕ при обращении к сопутствующему объекту. В этом случае, как отметили несколько человек, достаточно просто использовать такую фразу, как "сопутствующий объект". Вместо этого основная путаница происходит при обращении к обычным экземплярам. Затем, если я скажу "объект стека" (что означает некоторый экземпляр стека) или "объект стека" (что означает этот конкретный экземпляр), некоторые части учащихся подумают, что я имею в виду объект-компаньон, - хотя я не использовал слово компаньон или синглтон.
И я прекрасно вижу, откуда возникает путаница, потому что слово "объект" появляется в тексте программы только со своим сопутствующим объектом.