Chapter 6. Implicits
In the previous chapter, we covered the
type
system and polymorphism. We also covered the different types of variance which provide ways to constrain parameterized types. Finally, we covered some advanced
types
such as abstract type members, option, and so on.
In this chapter, we will cover implicit parameters and implicit conversions. We'll be learning about how they work, how to use them, and what kind of benefits and perils they provide.
When using a third-party library in your code, you usually have to take its code as it is. This can make some libraries unpleasant to deal with. It can be either the code style that differs from the one in your code base or simply some functionality that the library lacks that you can't elegantly supply.
Some languages have come up with solutions to alleviate this problem. Ruby has modules, Smalltalk allows packages to add to each other's classes, and C# 3.0 has static extension methods.
Scala has implicit...