什么" =>"在scala导入意味着什么?

时间:2015-07-27 12:21:13

标签: scala import symbols

我是scala的新手。我正在查看一些代码,并提出了导入com.infinite.usermanagement.controllers.{ SecurityService => BaseSecurityService }包的代码。我想知道=>符号表示导入。

2 个答案:

答案 0 :(得分:11)

此行表示您导入课程SecurityService并将其重命名为BaseSecurityService。您可以使用它来防止名称冲突等。您可以使用BaseSecurityService而不是原始类名来使用此类。

一个非常常见的例子如下(为了防止混淆Scala和Java类):

import java.util.{Map => JMap, List => JList}

答案 1 :(得分:10)

正如其他人所说,它是一个导入重命名。然而,有一个进一步的功能被证明是非常有用的,我想强调:如果你"重命名"到_,该符号不再导入。

这在少数情况下很有用。最简单的是,您希望从两个软件包中进行通配符导入,但是这两个软件包中都定义了一个名称,并且您只对其中一个软件包感兴趣:

import java.io.{ File=>_, _ }
import somelibrary._

现在,当您引用File时,它将毫不含糊地使用somelibrary.File,而无需对其进行完全限定。

在这种情况下,您还可以将java.io.File重命名为其他名称,以便将其排除在外,但有时您根本不想要名称可见。包含含义的包就是这种情况。如果您不想进行特定的隐式转换(例如,如果您有编译错误),则必须完全删除其名称:

import somelibrary.{RichFile => _, _}
// Files now won't become surprise RichFiles