2015-07-19 73 views
2

我從Java出來scala programmin,所以我不清楚我們應該如何在Scala中使用相對導入,以及確切的名稱查找規則是什麼?假設我有以下幾點:scala中的包名查找規則

pack.age 
    | 
    |----MyClass.scala 

com.age 
    | 
    |---AnotherClass.scala 

我需要導入MyClass.scalaAnotherClass.scala。由於斯卡拉只支持相對進口,我寫了以下內容:

import _root_.pack.age.MyClass 

它工作正常。但是當我試圖從那裏刪除_root_時,也沒有編譯時錯誤。

import pack.age.MyClass 

工作正常。

那麼,Scala中的包名稱查找規則是什麼?

回答

3

我相信這裏有一個操作順序。如果com.age中包含package.age.MyClass(即com.age.package.age.MyClass)以及package.age.MyClass,則前者將被提取。如果您想要後者,則需要使用語法。

由於這個類只有一個地方可以從拾取,那就是拾取的包。

3

所有進口都是相對的,所以有時會出現碰撞。例如,如果您有package com.org.project.scala,則下一個import scala._也會查找系統包。 _root_是可用於模擬絕對路徑的隱式頂層封裝。