- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是第一次教授 Scala,我的学生发现伴随对象中涉及的故意“双关语”非常令人困惑。考虑以下示例:
class Stack {
... methods such as push/pop
}
object Stack {
... factory method(s) and possibly others
}
当我使用诸如“堆栈对象”或“堆栈对象”或特别是“堆栈对象”之类的口头短语时,就会出现困惑。我的学生很难理解我指的是单例对象 Stack 还是 Stack 类的对象。
我正在寻找其他方式来表达这些东西,让初学者更容易理解。我考虑过总是将 Stack 类的对象称为“Stack 实例”或“Stack 实例”,但是当试图教导 OO 不能将这些东西称为对象时,这似乎很疯狂。在谈论单例对象 Stack 时,我一直尝试使用短语“单例对象”或“伴生对象”,但 Scala 的语法对我不利,因为它只使用“对象”一词。
在本例中,我可以将单例对象重命名为 StackFactory 而不是 Stack,但这只是我自己的类的一个选项,不适用于已内置到 Scala 中的一千零一个伴生对象。
编辑:
抱歉,我的问题不够清楚。主要的混淆不是在引用伴生对象时发生的。在这种情况下,正如一些人所指出的,使用诸如“伴随对象”之类的短语就很容易了。相反,主要的混淆发生在引用普通实例时。然后,如果我说“堆栈对象”(意思是某个堆栈实例)或“堆栈对象”(意思是这个特定实例),一些学生会认为我的意思是伴随对象 -即使我没有使用“伴侣”或“单例”这个词。
我可以清楚地看到困惑的根源,因为“对象”这个词出现在程序文本中,仅与伴随对象一起出现。
最佳答案
我认为Stack singleton
(如果它是独立的)或Stack Companion
(如果它带有一个类)是命名对象Stack<的最佳方式
。 Scala 语言引用将它们称为模块。但到目前为止,模块与运行时实体(如 OSGI 中的实体)关联太多,以至于无法适应这一点。
关于scala - 如何谈论伴生对象与常规对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12496886/
我是一名优秀的程序员,十分优秀!