【问题标题】:What does "=>" mean in import in scala?“=>”在scala中的导入是什么意思?
【发布时间】:2015-10-17 15:08:19
【问题描述】:

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

【问题讨论】:

    标签: scala import symbols


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      正如其他人所提到的,这是一个导入重命名。然而,在某些情况下,我想强调另一个功能非常有用:如果您“重命名”为 _,则不再导入该符号。

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

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

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

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

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

      【讨论】:

      • 为什么用逗号分隔两个下划线?
      • 这是两个导入。第一个下划线是一个 import-with-rename to _ 除了它实际上删除了名称而不是重命名它。第二个是通配符导入。恐怕 Scala 确实重载了 _ 很多。
      猜你喜欢
      • 2023-03-27
      • 2014-01-16
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 2012-01-14
      • 2013-08-05
      • 2014-05-06
      相关资源
      最近更新 更多