Skip to content

Commit

Permalink
FAQ: minor improvements to functions vs methods
Browse files Browse the repository at this point in the history
  • Loading branch information
SethTisue committed Sep 6, 2024
1 parent 482685d commit 562b744
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions _overviews/FAQ/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,18 +244,19 @@ differ from a function value such as:

val square: Int => Int = x => x * x

For Scala 2, there is a [complete answer on Stack Overflow](https://stackoverflow.com/a/2530007/4111404)
For **Scala 2**, there is a [complete answer on Stack Overflow](https://stackoverflow.com/a/2530007/4111404)
and a [summary with practical differences](https://tpolecat.github.io/2014/06/09/methods-functions.html).

Note that in **Scala 3** the differences are fewer;
for example, they will be able to
[accept implicit parameters]({{ site.scala3ref }}/contextual/context-functions.html)
as well as [type parameters]({{ site.scala3ref }}/new-types/polymorphic-function-types.html).
In **Scala 3**, the differences are fewer.
[Context functions]({{ site.scala3ref }}/contextual/context-functions.html)
accept given parameters and
[polymorphic functions]({{ site.scala3ref }}/new-types/polymorphic-function-types.html)
have type parameters.

Nevertheless, it is still recommended to use methods most of the time,
unless you absolutely need a function. And, thanks to
[eta-expansion](https://stackoverflow.com/questions/39445018/what-is-the-eta-expansion-in-scala)
you rarely would need to define a function rather than a method.
Most code uses methods most of the time,
unless a function value is actually needed. With
[eta-expansion](https://stackoverflow.com/questions/39445018/what-is-the-eta-expansion-in-scala),
a method can be converted as a function when needed.

### What's the difference between types and classes?

Expand Down

0 comments on commit 562b744

Please sign in to comment.