在 GitHub 上编辑此页面

导入

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

通配符导入

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

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

重命名导入

要重命名或排除导入,我们现在使用 as 而不是 =>。单个重命名导入不再需要用大括号括起来。示例

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

迁移

为了支持交叉构建,Scala 3.0 支持使用 _ 表示通配符和 => 表示重命名的旧导入语法,以及新的语法。旧语法将在未来版本中删除。在设置 -source 3.1-migration -rewrite 下提供从旧语法到新语法的自动重写。

语法

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