可转换导入foo._在Scala



我正在使用一个用于维度分析的实用程序库,我想用我自己的单元扩展它,并且我希望能够编写

import my.util.units._

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

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

并且我期望import my.util.units._具有与import squants._相同的效果以及其他定义。但似乎导入units._并没有最终将squants._添加到作用域中。

有没有一种方法可以在scala中做到这一点?

我们在工作中已经处理了一些问题,并尝试了几种方法来解决这个问题。以下是我们如何在整个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类型。我知道它需要相当多的重复,但我们发现它有些有用,特别是因为它为我们提供了类型名称的粒度。

此外,您不需要使用包对象,我们使用它主要是为了方便自动导入包周围的类型。你也可以使用一个普通的物体。

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

最新更新