Packaging and importing
One of the important aspects of object-oriented programs is how we define modular, reusable, and hierarchical structures. We're allowed to put all the code that we write, constructs like classes, traits, and objects, in some particular package. By using packaging and visibility rules, we can make our code more to reason about, means to expose some method to other classes or  and we get structured and modular code as an added advantage. There are a couple of ways you're allowed to write package statements in Scala; we'll take a look at those.
Package statements
We can write package statements at the beginning of the file. One of the simplest examples is as follows:
package country class Country(val name: String) { import Country._ val populationsMap = scala.collection.mutable.Map[Int, Double]() def showAveragePopulation() = println(averagePopulation(this.populationsMap.values)) } object Country { def averagePopulation(populations: Iterable[Double...