2013-10-23 79 views
5

隨着是scala導入遞歸嗎?

import mypack._ 

我仍然需要

import mypack.box.writer 
import mypack.box.reader 

import mypack.box.parser.stringparser 

什麼是適當的關鍵字搜索/谷歌? 「遞歸」給了我極大的「尾遞歸」結果。

+0

「遞歸」似乎與此無關。 「包容」,或許或可以想象爲「傳遞性」。「無論如何,正如丹尼爾所回答的那樣,它沒有二級或更深的進口效應。另一件不會做的事是向名稱空間的外部可見內容添加任何內容(包括當導入出現在類型或值定義塊內時)。 –

回答

10

不,Scala導入不是遞歸的。

包是用來保持當前範圍內的名稱空間乾淨。默認情況下導入所有的子包都會違背這一點。

。另一方面,進口相對的,所以你可以這樣做:

import mypack._ 
import box.writer 
import box.reader 
import box.parser.stringparser 

有些人不喜歡這種風格,因爲它是有點容易出錯。我不喜歡它,因爲絕對和相對進口之間沒有明確的區別。不過,它有時會有所幫助。