Учитывая следующий объект:Статический импорт внутри лестницу РЕПЛ
scala> object P2pClient {
| type Num = Double
| type Weights = Array[Array[Num]]
| }
defined object P2pClient
и следующий импорт:
import P2pClient._
Weights
типа кажется быть правильно понят:
val w: Weights = new Weights(3)
w: P2pClient.Weights = Array(null, null, null)
Но тогда почему это не работает в следующей конструкции:
case class SendWeightsReq(W: Weights) extends P2pReq[Weights] {
| override def value() = W
| }
<console>:12: error: not found: type Weights
case class SendWeightsReq(W: Weights) extends P2pReq[Weights] {
^
<console>:12: error: not found: type Weights
case class SendWeightsReq(W: Weights) extends P2pReq[Weights] {
^
Любые идеи о том, что происходило здесь (/ обходной путь)?
Обновление Судя по всему, существуют значительные ограничения на импорт подстановок в его REPL. Вот еще проще иллюстрации:
scala> import reflect.runtime.universe._
import reflect.runtime.universe._
scala> trait TT { def x[T <: java.io.Serializable : TypeTag]: T }
<console>:10: error: not found: type TypeTag
trait TT { def x[T <: java.io.Serializable : TypeTag]: T }
^
Итак, мы видим, что импорт подстановочные сделал не работу. Вот тот же код с явным пакетом:
scala> trait TT { def x[T <: java.io.Serializable : reflect.runtime.universe.TypeTag]: T }
defined trait TT
Используйте trailing '// show' для печати компилируемого, включая импорт. Отметьте пространство между косой чертой и показом. –
@ som-snytt Возникли проблемы с этим. Я поставил '// show' после кода выше, как вы упомянули. При выполнении ': paste', а затем' ctrl-D' REPL автоматически помещает ': quit' - убивает сеанс. – javadba