2011-04-21 25 views
17

在我的斯卡拉文件在一个特定的项目开始的时候,我经常有这样的诗句:我可以在Scala中一次导入多个包吗?

package com.mycompany 
package subproject 

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

有没有一种方法来创建一个对象ProjectImports(或包对象)“preimports”所有这些进口这样我就可以简单地写

import ProjectImports._ 

而不是整个列表,在我的每个其他项目文件?

这是与包导入Predef的方式有关吗?scala.`package`

+1

我想补充一点,考虑到列出个别包导入可以用于记录源文件的依赖关系,而导入ProjectImports._'隐藏各个依赖关系。 – 2011-04-21 14:02:12

+0

'import _universe_' ^^ – 2011-04-21 16:51:36

回答

8

如果您需要的所有进口都是某些特性的成员,则可以轻松完成。如果你有几个功能特性,内部类等,你可以创建从它们全部继承的对象。所以他们所有的东西都可以用简单的import MyObject._进口。以这种方式导入类变得有点棘手 - 您必须为每个类创建一个类型成员。

有关此技术的更多示例,请参见scalaz项目中的Casbah Imports objectScalaz object

+0

谢谢,在开发自己的lib时,它看起来是一个很好的技巧。你甚至可以混合包对象中的所有特征(那么我们只需要'import scalaz._',而不需要第二个'import Scalaz._'。但是其他库不会遵循这种模式? – 2011-04-22 08:14:45

+1

我们会将你的答案标记为已接受,直到我们在这个问题上找到更多的答案;现在看来我想在我的问题上做的事情不能按原样完成。 – 2011-04-30 18:39:36

相关问题