Путаница относительно работы защищенного [some_scope] и наследования в Scala - PullRequest
3 голосов
/ 20 августа 2011

Этот вопрос касается защищенной области применения scala. Следующий код работает отлично.

//In firstfile.scala

package A{ 
  class test{
    protected[test] var a=0
  }
}

package B{
  class test1 extends A.test{
    println(a)
  }
}

Но когда я помещаю пакет B в какой-то другой файл, компиляция завершается неудачно, говоря, что не найдено значение a

// In secondfile.scala

import A.test
package B{
  class test1 extends test{
    println(a)
  }
}

Я выполняю этот код в intellij. что может быть причиной этого? Разве два кода не одинаковы?

1 Ответ

4 голосов
/ 20 августа 2011

Я думаю, вы нашли ошибку.Я могу воспроизвести его в Eclipse с Scala IDE 2.0.0-beta9 with Scala 2.9.0-1.Сначала давайте создадим Foo.scala:

package a

class Foo {
  protected[Foo] var x = 0
}

, а затем Bar.scala:

package b

class Bar extends a.Foo {
  println(x) // Error: Not found: value x
}

Eclipse говорит нам, что произошла ошибка.Но после очистки проекта эта ошибка исчезает.И я проверил, с scalac все компилируется с первой попытки (кто бы сомневался).

Обновление:

Я открыл билет # 1000567 в Scala IDEbugtracker относительно этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...