Use qualified names to keep same-named methods apart.

Avoiding Name Collisions

NamespaceLabels.scala
object Metric {
  def label(n: Int): String = n + "m"
}

object Imperial {
  def label(n: Int): String = n + "ft"
}

object Main {
  def main(args: Array[String]): Unit = {
    val n = 
    val metric = Metric.label(n)
    val imperial = Imperial.label(n)

    println("metric=" + metric)
    println("imperial=" + imperial)
  }
}
object Metric {
  def label(n: Int): String = n + "m"
}

object Imperial {
  def label(n: Int): String = n + "ft"
}

object Main {
  def main(args: Array[String]): Unit = {
    val n = 
    val metric = Metric.label(n)
    val imperial = Imperial.label(n)

    println("metric=" + metric)
    println("imperial=" + imperial)
  }
}
object Metric {
  def label(n: Int): String = n + "m"
}

object Imperial {
  def label(n: Int): String = n + "ft"
}

object Main {
  def main(args: Array[String]): Unit = {
    val n = 
    val metric = Metric.label(n)
    val imperial = Imperial.label(n)

    println("metric=" + metric)
    println("imperial=" + imperial)
  }
}
namespace-labels Two objects can define a method with the same name. Qualifying each call with its object name, like `Metric.label` and `Imperial.label`, avoids any clash.