【发布时间】:2017-11-12 17:54:49
【问题描述】:
我在 Scala REPL 中编写了以下内容。我不明白 REPL 为我创造了什么。 c 是 Any 类的对象吗?如何找到c 属于哪个类?
scala> object c
defined object c
【问题讨论】:
标签: scala
我在 Scala REPL 中编写了以下内容。我不明白 REPL 为我创造了什么。 c 是 Any 类的对象吗?如何找到c 属于哪个类?
scala> object c
defined object c
【问题讨论】:
标签: scala
通过声明object c,您基本上实例化了一个名为c 的单例对象,它没有自定义属性或方法。此对象不是Any 类型,您可以通过以下方式查看其类:
scala> object c
defined object c
scala> c.getClass
res14: Class[_ <: c.type] = class c$
要了解有关单例对象的更多信息,请阅读参考资料here。摘录:
Singleton 对象是一种用于定义单一用途的简写 类,不能直接实例化,并且是 val 成员 对象的定义点,具有相同的名称。确实像 vals,单例对象可以定义为特征或类的成员, 虽然这是非典型的。
【讨论】:
object c 的类(类型)是c.type。通过在 Scala 中声明一个对象,您可以隐式定义类和单例对象(Scala 将为您生成这些对象)。由于类没有在源代码中明确定义,因此存在称为type 的特殊对象成员来引用对象的类。
【讨论】: