假设,我们有如下定义:什么是`object`的默认`apply`方法?
scala> trait T
defined trait T
scala> object A extends T
defined module A
然后,我们可以创建一个对象与类型T
:
scala> val t: T = A
t: T = [email protected]
没有new
关键字用在这里,因此,因此在这里使用的apply
方法。 但是到目前为止我们没有定义apply
方法,所以我猜这里使用的默认方法是apply
?但它是什么样子?
更新1:
在分配A
类型具有相同的变量,错误将被抛出:
scala> val a: A = A
<console>:9: error: not found: type A
val a: A = A
^
为什么相同的“把戏”不是在这里工作?有什么不同 ?
谢谢。当我理解你的时候,'A'的(单例)对象已经是一个完整的对象。但在另一个示例中(请参阅Update 1),将对象'A'用作普通对象时会引发错误。这背后的原因是什么? – 2012-07-09 08:16:18
@JohnThreepwood:这在技术上是一个单独的问题,但无论如何。由于'A'是一个对象(认为是singleton),所以创建它的变量或将它作为参数传递是没有意义的(参见:def foo(a:A)')。您只需使用'A'即可访问它。 – 2012-07-09 08:30:44