Link Search Menu Expand Document

导入

通配符和重命名导入(以及导出)的语法已修改。

通配符导入

通配符导入现在使用 * 而不是下划线表示。例如:

import scala.annotation.*  // imports everything in the annotation package

如果要导入名为 * 的成员,可以在使用反引号括起其名称。

object A {
   def * = ...
   def min = ...
}

object B {
  import A.`*`   // imports just `*`
}

object C {
  import A.*     // imports everything in A
}

重命名导入

To rename or exclude an import, we now use as instead of =>. A single renaming import no longer needs to be enclosed in braces. Examples:

import A.{min as minimum, `*` as multiply}
import Predef.{augmentString as _, *}     // imports everything except augmentString
import scala.annotation as ann
import java as j

迁移

为了支持 cross-building,Scala 3 除了支持新的导入语法外,也支持旧式导入语法(_ 作为通配符,=> 表示重命名)。 旧式语法将在未来被删除。选项 -source 3.1-migration -rewrite 下提供了从旧式语法到新式语法的自动重写。

语法

Import            ::=  ‘import’ ImportExpr {‘,’ ImportExpr}
ImportExpr        ::=  SimpleRef {‘.’ id} ‘.’ ImportSpec
ImportSpec        ::=  NamedSelector
                    |  WildcardSelector
                    | ‘{’ ImportSelectors) ‘}’
NamedSelector     ::=  id [‘as’ (id | ‘_’)]
WildCardSelector  ::=  ‘*' | ‘given’ [InfixType]
ImportSelectors   ::=  NamedSelector [‘,’ ImportSelectors]
                    |  WildCardSelector {‘,’ WildCardSelector}