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)
归档时间: |
|
查看次数: |
1061 次 |
最近记录: |