在Scala中过渡导入foo._

时间:2014-04-10 01:26:11

标签: scala

我正在使用实用程序库进行维度分析,我想用自己的单位进行扩展,我希望能够编写

import my.util.units._

在我的项目中的文件中。我的想法是定义

package my.util

object units {
  import squants._
  [... other definitions ...]
}

我希望import my.util.units._import squants._具有相同的效果,加上其他定义。但似乎导入units._并未最终将squants._添加到范围。

有没有办法在scala中执行此操作?

2 个答案:

答案 0 :(得分:3)

导入在Java或Scala中不可传递。您可能最接近所寻求的是创建一个对象(可能是一个包对象),其中包含每个感兴趣类型的type定义。

答案 1 :(得分:3)

我们已经在工作中处理了这一点,我们试图通过几种方式解决这个问题。以下是我们如何在scala-amqp中导入rabbitmq类型的示例:

package com.bostontechnologies

package object amqp {

  type RabbitShutdownListener = com.rabbitmq.client.ShutdownListener
  type RabbitConnection = com.rabbitmq.client.Connection
  type RabbitChannel = com.rabbitmq.client.Channel
  type RabbitConsumer = com.rabbitmq.client.Consumer
  type RabbitAddress = com.rabbitmq.client.Address

  ...
}

所以现在当我们导入com.bostontechnologies.amqp._时,我们可以访问我们定义的rabbitmq类型。我知道它需要相当多的重复,但是我们发现它有点用处,特别是因为它为我们提供了类型名称的粒度。

此外,您不需要使用包对象,我们主要使用它来方便自动导入包的类型。您也可以使用普通对象。