【发布时间】:2020-06-18 18:34:47
【问题描述】:
抽象成员方法在单例对象中是非法的
scala> object Foo {
| def g: Int
| }
def g: Int
^
On line 2: error: only traits and abstract classes can have declared but undefined members
作为抽象值成员
scala> object Foo {
| val x: Int
| }
val x: Int
^
On line 2: error: only traits and abstract classes can have declared but undefined members
然而抽象类型成员在单例对象中是合法的
scala> object Foo {
| type A
| }
object Foo
很明显,类型成员是抽象的意义与其他抽象成员不同。有什么区别?由于对象是最终的,抽象类型成员似乎无法具体化,它怎么能有用?
【问题讨论】:
-
投稿人频道里有关于这个的讨论,你可以搜索一下。这是有原因的,但我真的不明白。
-
@LuisMiguelMejíaSuárez 你的意思是What’s in a type alias?似乎它不是我能收集到的抽象。
-
我相信是这个one,但我不记得是否只有这个。
标签: scala singleton overriding type-alias abstract-type