【问题标题】:Package name lookup rules in scalascala中的包名称查找规则
【发布时间】:2015-07-19 16:59:31
【问题描述】:

我是从 Java 开始使用 scala programmin 的,所以我不清楚我们应该如何在 Scala 中使用相对导入以及确切的名称查找规则是什么?假设我有以下内容:

pack.age
   |
   |----MyClass.scala

com.age
   |
   |---AnotherClass.scala

我需要将MyClass.scala 导入AnotherClass.scala。由于 Scala 仅支持相对导入,因此我编写了以下内容:

import _root_.pack.age.MyClass

而且效果很好。但是当我试图从那里删除_root_时,也没有编译时错误。

import pack.age.MyClass

效果也很好。

那么,Scala 中的包名查找规则是什么?

【问题讨论】:

    标签: scala


    【解决方案1】:

    我相信这里有一个操作顺序。如果你在 com.age 中有 package.age.MyClass(即 com.age.package.age.MyClass),还有 package.age.MyClass,前者会被选中。如果你想要后者,你需要使用 root 语法。

    因为只有一个地方可以拾取这个类(在root中),那就是拾取的包。

    【讨论】:

      【解决方案2】:

      所有导入都是相对的,因此有时会出现冲突。例如,如果您有package com.org.project.scala,那么下一个import scala._ 也会查找系统包。 _root_ 是隐式顶层包,可用于模拟绝对路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多