Chr*_*aki 34 scala companion-object
我是第一次教斯卡拉,我的学生们发现故意"惩罚"涉及伴侣物体非常混乱.请考虑以下示例:
class Stack {
... methods such as push/pop
}
object Stack {
... factory method(s) and possibly others
}
Run Code Online (Sandbox Code Playgroud)
当我使用诸如"堆栈对象"或"堆栈对象"之类的语言短语或尤其是"堆栈对象"时,会出现混淆.我的学生很难理解我是指单身对象Stack还是Stack类的对象.
我正在寻找替代方法来表达这些初学者可以更容易理解的东西.我一直认为Stack类的对象总是称为"Stack实例"或"Stack的实例",但是当试图教OO不能称这些东西为对象时,它似乎很疯狂.在谈论单例对象Stack时,我一直试图总是使用短语"singleton object"或"companion object",但Scala的语法在那里对我不利,因为它只使用了"object"这个词.
在这种情况下,我可以重命名单例对象StackFactory而不是Stack,但这只是我自己的类的一个选项,而不是已经内置到Scala中的一千个和一个伴随对象.
编辑:
对不起,我的问题不够清楚.主要的混淆不是在引用伴侣对象时发生的.在这种情况下,正如几个人所指出的那样,很容易使用诸如"伴侣对象"之类的短语.相反,在引用普通实例时会发生主要的混淆.然后,如果我说"堆栈对象"(意思是一些堆栈实例)或"堆栈对象"(意味着这个特定实例),一些学生会认为我的意思是伴侣对象 - 即使我没有使用单词伴侣或单身人士.
我可以很好地看到混淆来自哪里,因为"对象"这个词只出现在程序文本中,只出现在伴侣对象中.
Mar*_*sky 19
我认为Stack singleton
(如果它是独立的)或Stack companion
(如果它有一个类)是最好的命名方式object Stack
.Scala语言参考将它们称为模块.但是,模块现在已经与运行时实体(如在OSGI中)过多关联,以便对此感到满意.
Scala中的这个问题当然不是没有讽刺意味,但即使在Java空间中,也可能存在关于java.lang.Object
其实例,类和类的实例的命名问题.
对于Scala,我提出以下术语:
object
s"对象"最后,我会说OO的概念包括对象(在模块和组合的意义上)和对象(在实例意义上).
无论你如何决定,一致性是关键,特别是对于教学.
归档时间: |
|
查看次数: |
1641 次 |
最近记录: |