什么是单例类型?应用和影响是什么?
例子非常受欢迎,外行术语更受欢迎!
如果将类型看作值的集合,则值x
的单例类型是仅包含该值({x}
)的类型。使用例子:
-
模式匹配:
case _: Foo.type
使用eq
检查匹配对象是否与Foo
相同,其中case Foo
仅使用equals
检查它是否等于Foo
。 -
需要写下
object
的类型(作为类型参数,参数等):object A def method(): A.type = A
-
保证一个方法的返回值是它被调用的对象(对于方法链接很有用,从这里的例子):
class A { def method1: this.type = { ...; this } } class B extends A { def method2: this.type = { ...; this } }
你现在可以调用
new B.method1.method2
,如果没有this.type
你就不能这样做,因为method1
会返回A
。