In Scala, you can define package objects. It seems thus that you can access that package object by writing the package name, and then `package`:
// file package.scala in src/com
package com
package object test {
val Version = 2
}
// file Test.scala in src/test
package test
object Test {
def main(args: Array[String]) {
val p = com.test.`package` // get ref on package object
val v1 = com.test.`package`.Version // (1) get val
val v2 = com.test.Version // (2) get val
}
}
What is the difference between (1) and (2)? In some cases, I've had to write the extra `package` for my code to run. Should there be a difference or is it a compiler bug?
Moreover, what does e.g. this line mean, in Predef.scala?
scala.`package` // to force scala package object to be seen.