Scala _ placeholder

Today we are leveling up !

Introducing several use cases for the mysterious _. I consider all those use cases to fall under the “Placeholder” category but the technical terms can be more granular. In the extra explanation, after the exercise, I will put a link with more in detailed description if you want to dive deeper.

Sorry it was a lengthy exercise !

The first use case is related to partial function. It allows you to put a placeholder where an argument of a function would be to create a new function that take as argument the missing argument(s).

You can omit more than one argument and the input of the new function will be those omitted arguments.

The second use case is during transformations or chained operation such as map, flatMap, filter, etc…

Now, when you see something like a => a ..., you know you can replace it with _.

As a side note, in IntelliJ, you can put your caret on the variable ( the variable name before the => ), press ALT+ENTER and you should be seeing something like “Convert parameter to underscore section”. That will replace the variable by _ for you.

The third and last example under the category Placeholder is when you are computing accumulations. Using function such as foldLeft or reduce. Explaining why sometime you have to use a._1 + a._2 and sometime _ + _ is beyond this lesson. But now you know what it means when you read things like .reduce(_*_) : it is simply .product.

There are a lot more use case for _ that falls under other categories and we are going to see them in later SKBs.

If you want to know more, feel free to check out this Stackoverflow answer.

Reveal more information and clues
Load Exercise