如何将简单的名称带入范围?

时间:2010-08-09 12:09:39

标签: scala

我正在开发一个代码生成器,它将输出以下类/对象:

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 个答案:

答案 0 :(得分:1)

import A._ B将在导入范围内(至少在Scala 2.8中),因此您可以节省几个字母:

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

答案 1 :(得分:1)

您可以在生成的代码中使用def。例如,

object A {
    // ... other code

    def b = B.b   
    def C = B.C
    def c = C.c
}