使用Unicode(非ASCII)文件名的包对象,Scala的效果很差

时间:2016-03-23 18:50:04

标签: scala unicode

在SBT / Windows 10下使用Scala 2.12.0-M3,我希望这段代码能够编译和打印" 1"但是Scala抱怨没有在具有非ASCII名称的包对象下找到变量。

(1)

package パッケージ
package object パッケージ {
  val a = 1
}

(2)

package second
import パッケージ._
object Example extends App {
  println(a)
}

这是编译器中的错误吗?其他人可以在另一个平台上重现这个问题吗?

1 个答案:

答案 0 :(得分:3)

这段代码无法编译,这看起来是正确的。

在包Y中声明包对象X时,意味着X位于Y中。

println(パッケージ.a) 

会奏效。为了说清楚,你的第二个来源的重写版本:

package second
object Example extends App {
  println(パッケージ.パッケージ.a)
}

现在假设你有包x,我们想要创建一个包对象y,其完全限定名称为x.y,换句话说,该对象将驻留内部 x

package x
package object y

现在,从“root”包中,如果我们想引用y,我们需要import x或使用它的完全限定名x.y

您的原始代码有点令人困惑,因为您有两个同名,一个另一个,内部代码发生成为一个包对象。