2011-10-19 54 views
7

做任何你知道爲什麼從Scalaz例子總是使用此導入技術:Scalaz庫導入技術推理

import scalaz._ 
import Scalaz._ 

而不是:

import scalaz.Scalaz._ 

?我試圖理解偏好背後的理由是什麼。

謝謝!

回答

10

我認爲這是因爲import scalaz._; import Scalaz._scalaz.Scalaz對象中導入scalaz程序包中的所有成員。

如果您只要導入import scalaz.Scalaz._,那麼您的只有scalaz.Scalaz的對象導入成員。

+4

在第一種情況下,也來自'scalaz'包對象。 –

3

import scalaz._從核心包導入所有[類型]類。

import Scalaz._ import implicits使所有這些類都有用。像從標準集合到MA的轉換以及獲得Option包裝器等等。

所以你可以使用一個沒有另一個。

我相信這是一個有意識的設計決策,可以讓我們生存任何一種隱含相關的問題,如this one

+0

謝謝!這是需要考慮的重要附加信息。 –

+0

使用以下mechansim可以禁用完全導入的特定元素:import com.foo。{unwanted => _,_}和「unwanted」不會被引入。 –

+0

爲什麼我真的愛Scala是因爲它有噸我需要學習的重要功能,直到時間到來。 @pyrony感謝您的提示! – CheatEx