Importing Code, Part 2

Import Statements

  • Some built-in Scala types and functions are automatically available to you
    • List, Vector, Seq, Map, Set, String, Int, Double, Boolean, println (and more)
  • These work because these three packages are implicitly imported for you:
java.lang.*
scala.*
scala.Predef.*

Everything else is NOT automatically available:

  • mutable collections
  • every third-party library

In this video I show several ways to use Scala import statements.

To use a third-party library

  • Configure how to access/download it in your build tool (such as by adding the correct entry in build.sbt when using the SBT build tool)
    • (This code is said to be “packaged” so you can use it)
  • Then import it into your code with the correct import statement

Example usage

My “utilities” library looks like this:

package com.alvinalexander.utils

object StringUtils:

    // convert "big belly burger" to "Big Belly Burger"
    def capitalizeAllWords(s: String): String =
        s.split(" ")
         .map(_.capitalize)
         .mkString(" ")

    def isBlank(s: String): Boolean =
        s.trim == ""

    def isNullOrEmpty(s: String): Boolean = 
        if s == null || isBlank(s) then true else false
    
    // this code goes on for a while ...

I don’t demonstrate how to configure it in build.sbt, but I show several ways to import it in other code:

package foo

import com.alvinalexander.utils.StringUtils.capitalizeAllWords
import com.alvinalexander.utils.StringUtils.truncate
import com.alvinalexander.utils.StringUtils.truncateWithEllipsis

@main def stringUtilsTest(): Unit =

    val bbb = "big belly burger"

    val capWords = capitalizeAllWords(bbb)
    println(capWords)

    println(truncate(bbb, 9))
    println(truncateWithEllipsis(bbb, 9))