簡體   English   中英

Scala import語句位於scala類的頂部和內部

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM