What is a singleton type? what are the applications, the implications ?
Examples are more than welcome and layman terms are even more welcome !
If you think of a type as a set of values, the singleton type of a value x is the type which only contains this value ({x}). Usage examples:
x
{x}
Pattern matching: case _: Foo.type checks that the matched object is the same as Foo using eq, where case Foo only checks that it's equal to Foo using equals.
case _: Foo.type
Foo
eq
case Foo
equals
It's needed to write down the type of an object (as a type parameter, an argument, etc.):
object
object A def method(): A.type = A
To guarantee the return value of a method is the object it's called on (useful for method chaining, example from here):
class A { def method1: this.type = { ...; this } } class B extends A { def method2: this.type = { ...; this } }
You can now call new B.method1.method2, which you couldn't without this.type because method1 would return A.
new B.method1.method2
this.type
method1
A
2.1m questions
2.1m answers
60 comments
57.0k users