In this chapter, we've seen how generics work and how Kotlin bypasses Java's type erasure with reified generics. We've also seen how Kotlin doesn't have any constructs for concurrent programming; instead, it leaves this to libraries. Then, we learned how Kotlin has another use for the by
keyword with delegated properties. And, we covered Kotlin's DSL building features, and the receiver and infix functions. Finally, we explored how Kotlin supports operator overloading.
In the next chapter, we'll be exploring the Kotlin Standard Library. We'll learn about Collection
types and see how Collections
have numerous extension functions that work with function types. We'll also cover the most used and most helpful functions and extension functions.