“=>”在scala中导入是什么意思?

What does "=>" mean in import in scala?

我是 Scala 的新手。我正在查看一些代码并想出了一个导入 com.infinite.usermanagement.controllers.{ SecurityService => BaseSecurityService } 包的代码。我想知道 => 符号在导入中是什么意思。

这一行意味着您导入 class SecurityService 并将其重命名为 BaseSecurityService。您可以使用它来防止名称冲突等。您可以通过使用 BaseSecurityService 而不是原始的 class 名称来使用此 class。

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

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

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

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

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

现在,当您引用 File 时,它将明确使用 somelibrary.File,而无需完全限定它。

在那种情况下,您也可以将 java.io.File 重命名为另一个名称以使其不碍事,但有时您真的根本不想让名称可见。包含隐式的包就是这种情况。如果你不想要一个特定的隐式转换(例如,如果你宁愿有一个编译错误)那么你必须完全删除它的名字:

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