scala中导入的"=>"是什么意思?

edd*_*ark 9 import symbols scala

我是斯卡拉的新手.我正在查看一些代码,并提出了一个导入com.infinite.usermanagement.controllers.{ SecurityService => BaseSecurityService }包的代码.我想知道=> sign在导入中意味着什么.

Pea*_*nut 13

此行表示您导入该类SecurityService并将其重命名为BaseSecurityService.您可以使用它来防止名称冲突等.您可以使用此类来BaseSecurityService代替原始类名.

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

import java.util.{Map => JMap, List => JList}
Run Code Online (Sandbox Code Playgroud)


pnd*_*ndc 11

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

这在少数情况下很有用.最简单的是你想从两个包中进行通配符导入,但是这两个包中都定义了一个名称,你只对它们中的一个感兴趣:

import java.io.{ File=>_, _ }
import somelibrary._
Run Code Online (Sandbox Code Playgroud)

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

在这种情况下,您也可以将其重命名java.io.File为另一个名称以使其不受影响,但有时您根本不想要名称可见.包含含义的包就是这种情况.如果您不想要特定的隐式转换(例如,如果您更喜欢编译错误),那么您必须完全删除其名称:

import somelibrary.{RichFile => _, _}
// Files now won't become surprise RichFiles
Run Code Online (Sandbox Code Playgroud)