[英]Scala import statement at top and inside scala class
在Scala中,這兩種導入策略有什么區別
選項1
import com.somepackage
class MyClass {
//further code
}
選項2
class MyClass {
import com.somepackage
//further code
}
在Scala中, import
的詞法范圍。 import
標識符僅在import
它們的范圍內可見。
在第一種情況下,范圍是文件,因此, import
s在整個文件中可見,但在其他文件中不可見。 在第二種情況下,作用域是類,因此import
s在整個類中都是可見的, 即使在同一文件中,其他類也不可見(嵌套在MyClass
的課程類除外)。
您還可以將import
范圍限制為僅單個方法甚至單個塊(!)
class Foo {
def bar {
// do something
{
import baz.quux.Frotz
// use Frotz
}
// Frotz not visible here
}
}
這是Scala的規則性,正交性和簡單性的一個很好的例子。 例如,在Java中,塊創建局部變量的作用域,而不是import
的作用域(或方法或其他任何東西)。 在Scala中,塊創建作用域。 期。 沒有例外,沒有極端情況。
import
位於花括號之間,因此,僅在花括號之間可見。 它確實可以滿足您的期望。
區別在於:
在Option 1
,導入對於整個范圍都是可行的。 即com.somePackage
任何類/特征/函數都可以在MyClass
內部/外部的任何地方使用
但是對於Option 2
它只能在MyClass
內部使用,而不能在MyClass
外部使用,因為import
范圍僅限於MyClass
內部。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.