Scala:使用不同的名称在同一文件中导入对象

时间:2017-07-05 10:41:09

标签: scala import namespaces rename

让我们说我在同一个文件中:

object x {
  case object z
}

object y {
  .. //want to internally refer to x.z as xxx.z
}

换句话说,我需要在同一个文件中重命名对象的导入。

目前我诉诸:

object y {
  import x
  val xxx=x
  .. //referring to x.z as xxx.z
}

有更好的方法吗?或许类似于:

import .{x->xxx}

3 个答案:

答案 0 :(得分:1)

是的,你可以这样做:

package packagename

object x {
    case object z
}

object y {
    import packagename.{x => xxx}
    xxx.z
}

请注意,您无法导入驻留在默认包中的内容。

答案 1 :(得分:1)

在Scala中,您可以像这样重命名导入:

import package.{x => xxx}

请点击此处了解详情:http://blog.bruchez.name/2012/06/scala-tip-import-renames.html

编辑:来自下面的评论

如果您在同一个文件中 - 您不需要导入任何内容:

object X {
  val a = 5
}

object Y {
  val x = X
  def p = println(x.a)
}

Y.p

输出

5

答案 2 :(得分:0)

我得出的结论是,对于我在这里尝试做的建议,包对象确实更合适,因为x只扮演组织层次结构的角色。见here