Packages and Imports
Avoiding Name Collisions
Use qualified names to keep same-named methods apart.
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.
Avoiding Name Collisions
NamespaceLabels.scala
Replay: real traced execution (multi-file project)
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 = 5
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 = 2
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 = 8
val metric = Metric.label(n)
val imperial = Imperial.label(n)
println("metric=" + metric)
println("imperial=" + imperial)
}
}
n ← 5, metric ← 5m, imperial ← 5ft
9object Main {10 def main(args: Array[String]): Unit = {11 val n→ 5 = 5 //@n=2, 812 val metric→ 5m = Metric.label(n5)13 val imperial→ 5ft = Imperial.label(n5)1415 println("metric=" + metric5m)16 println("imperial=" + imperial5ft)17 }18}outputmetric=5m imperial=5ft
n ← 2, metric ← 2m, imperial ← 2ft
9object Main {10 def main(args: Array[String]): Unit = {11 val n→ 2 = 212 val metric→ 2m = Metric.label(n2)13 val imperial→ 2ft = Imperial.label(n2)1415 println("metric=" + metric2m)16 println("imperial=" + imperial2ft)17 }18}outputmetric=2m imperial=2ft
n ← 8, metric ← 8m, imperial ← 8ft
9object Main {10 def main(args: Array[String]): Unit = {11 val n→ 8 = 812 val metric→ 8m = Metric.label(n8)13 val imperial→ 8ft = Imperial.label(n8)1415 println("metric=" + metric8m)16 println("imperial=" + imperial8ft)17 }18}outputmetric=8m imperial=8ft