我正在使用实用程序库进行维度分析,我想用自己的单位进行扩展,我希望能够编写
import my.util.units._
在我的项目中的文件中。我的想法是定义
package my.util
object units {
import squants._
[... other definitions ...]
}
我希望import my.util.units._
与import squants._
具有相同的效果,加上其他定义。但似乎导入units._
并未最终将squants._
添加到范围。
有没有办法在scala中执行此操作?
答案 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类型。我知道它需要相当多的重复,但是我们发现它有点用处,特别是因为它为我们提供了类型名称的粒度。
此外,您不需要使用包对象,我们主要使用它来方便自动导入包的类型。您也可以使用普通对象。