Skip to content

Commit

Permalink
Merge pull request #3103 from SethTisue/faq-this-type-tweak
Browse files Browse the repository at this point in the history
FAQ: tweak answer about this.type
  • Loading branch information
adpi2 authored Nov 12, 2024
2 parents 68a41e8 + fc1f78d commit 2027e3a
Showing 1 changed file with 10 additions and 8 deletions.
18 changes: 10 additions & 8 deletions _overviews/FAQ/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -292,14 +292,16 @@ For more details, see the Scala Style Guide, [here](https://docs.scala-lang.org/

### How can a method in a superclass return a value of the “current” type?

First, note that using `this.type` won't work. People often try that,
but `this.type` means "the singleton type of this instance", a
different and too-specific meaning. Only `this` itself has the
type `this.type`; other instances do not.

What does work? Possible solutions include F-bounded polymorphism
_(familiar to Java programmers)_, type members,
and the [typeclass pattern](http://tpolecat.github.io/2013/10/12/typeclass.html).
Using `this.type` will only work if you are returning `this` itself.
`this.type` means "the singleton type of this instance". Only `this`
itself has the type `this.type`; other instances of the same class do
not.

What does work for returning other values of the same type?

Possible solutions include F-bounded polymorphism _(familiar to Java
programmers)_, type members, and the [typeclass
pattern](http://tpolecat.github.io/2013/10/12/typeclass.html).

This [blog post](http://tpolecat.github.io/2015/04/29/f-bounds.html)
argues against F-bounds and in favor of typeclasses;
Expand Down

0 comments on commit 2027e3a

Please sign in to comment.