Scala underscore minimal function
Solution 1:
For the record, a.map(_)
does not work because it stands for x => a.map(x)
, and not a.map(x => x)
. This happens because a single _
in place of a parameter stands for a partially applied function. In the case of 2*_
, that stands for an anonymous function. These two uses are so close that is very common to get confused by them.
Solution 2:
Your first shorthand form can also be written point-free
a map (2*)
Thanks to multiplication being commutative.
As for (x) => x
, you want the identity
function. This is defined in Predef and is generic, so you can be sure that it's type-safe.
Solution 3:
You should use identity
function for this use case.
a.map(identity)
identity
is defined in scala.Predef as:
implicit def identity[A](x: A): A = x