What are closures?

We'll solve the problem in the previous section using closures. But first, let's explain the concept of a closure. In programming terminology, a closure has more than one definition:

  • A closure is simply a function value that gets created at runtime and encompasses a reference to a free variable that's not in the local scope
  • A closure in practical terms is a function that you can pass around that retains the same scope and values as the ones it had at the time of creation

What do we mean by these statements? Let's check that using a very simple, but a fun example:

object AClosure extends App { var advertisement = "Buy an IPhone7" val playingShow = (showName: String) => println(s"Playing $showName. Here's the advertisement: ...

Get Learning Scala Programming now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.