“=>”在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
我是 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