导入
通配符和重命名导入(以及导出)的语法已更改。
通配符导入
通配符导入现在使用 *
而不是下划线表示。示例
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}
本文内容