2011-04-21 93 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

相關問題