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