在Scala中是否可以一次性导入多个包?

18

在我特定项目的Scala文件开头,我经常有这样的行:

package com.mycompany
package subproject

import common._
import uiutils._
import databinding._
import modeling._

有没有办法创建一个名为ProjectImports的对象(或包对象),“预导入”所有这些import,以便我可以简单地编写

import ProjectImports._

在我的其他项目文件中,是否可以只导入列表的一部分?

这是否与在Predef中使用scala.`package`导入scala包有关?


1
我想要补充一下,列出单独的包导入可以用于记录源文件的依赖关系,而import ProjectImports._则隐藏了单个依赖项。 - Frank S. Thomas
1个回答

8
如果你需要的所有导入都是某些特性的成员,那么你可以很容易地做到这一点。如果你有几个带有函数、内部类等的特性,你可以创建从它们中继承的对象。因此,他们的所有内容都可以通过简单的 import MyObject._ 进行导入。以这种方式导入类变得有点棘手 - 你必须为每个类创建一个类型成员。
有关此技术更多示例,请参见 Casbah 的导入对象和 scalaz 项目中的Scalaz 对象

谢谢,看起来这是开发自己的库时使用的一个不错的技巧。你甚至可以在包对象中混合所有特性(然后我们只需要import scalaz._,而不再需要第二个import Scalaz._)。但是其他不遵循这种模式的库怎么办? - Jean-Philippe Pellet
1
我将您的答案标记为已接受,直到我们对此问题有更多了解;目前看来,我在问题中想要做的事情似乎无法直接实现。 - Jean-Philippe Pellet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接