Как вывести простое имя в сферу? - PullRequest
4 голосов
/ 09 августа 2010

Я разрабатываю генератор кода, который будет выводить следующие классы / объекты:

class A {
   var a : Int = _
   var b : B = _

   class B {
    var b : Int = _
    var c : C = _

    class C {
      var c : Int = _
    }
  }
}

object A {
  val a = ...
  object B extends Base {
    val b = ...
    object C extends Base {
      val c = ...
    }
  }
}

с пользователем, создающим такие термины, как это:

A (
  a(1),
  B (
    b(2),
    C (
      c(3)
    )
  )
)

Теперь, чтобы заставить его работать, мне нужно вставить 3 импорта в код пользователя:

import A._
import A.B._
import A.B.C._

Это выглядит безобразно для меня. Может быть, есть другой способ решения проблемы, которую я просто слеп, чтобы увидеть?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 09 августа 2010

Вы можете использовать def s в сгенерированном коде.Например,

object A {
    // ... other code

    def b = B.b   
    def C = B.C
    def c = C.c
}
1 голос
/ 09 августа 2010

После import A._ B будет находиться в области импорта (по крайней мере, в Scala 2.8), поэтому вы можете сэкономить несколько букв:

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