gpt4 book ai didi

scala - 如何谈论伴生对象与常规对象?

转载 作者:行者123 更新时间:2023-12-03 03:42:09 28 4
gpt4 key购买 nike

我是第一次教授 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com