確かに非常に奇妙なこと。私は次のプロジェクト構造を持っています:
myproject/one/two
パッケージmyproject
の中にクラスがあります:
abstract class A (two: Buffer[Int])
そして、one
私が持っているパッケージの中に:
object B extends A (Buffer[Int](1, 2, 3)) {
val с = two.map(_ + 1) // ERROR
}
ただし、エラーは次のように述べています。
オブジェクト
map
はパッケージのメンバーではありませんmyproject/one/two
ここでパッケージを参照するのではなく、ローカル変数を参照することは完全に明らかであるため、これは明らかに誤りです...また、の後にtwo
コンテキストアシストには表示されませんが、(Scala-IDE)に表示されます。これは意図された動作であり、私は何か間違ったことをしていますか、それともバグですか?this.
B
A
アップデート:
(Nicolas:Dによって同時に提案されました)(公開する)two
として指定することにより、名前の衝突を解決することができました。val
最初は気づかなかったのですが、プライベートで後継クラスでは利用できませんでした。それにもかかわらず、私はまだ疑問に思っています、なぜ、そしてどのようにして、変数が存在しないか、アクセスできないと言う代わりに、Scalaがパッケージをピックアップしたのですか?