Scala顶级包对象

Scala顶级包对象,scala,Scala,编辑此问题以使其更清晰,请参阅下面的评论以了解解释。 这对我来说似乎有点明显,但它似乎不是这样工作的,但是如果我有一个scala包对象,它位于包的顶层。比如说likecom.company,下面就是简单的例子 package-com 包装物公司{ val something=“你好,世界。” } 现在在我看来,这个变量会慢慢地流下来,并且可以从它的子包中访问,但事实并非如此 //向下2层而不是直接子层 包com.company.app 进口公司_ 对象模型扩展应用程序{ println(某物)

编辑此问题以使其更清晰,请参阅下面的评论以了解解释。

这对我来说似乎有点明显,但它似乎不是这样工作的,但是如果我有一个scala包对象,它位于包的顶层。比如说like
com.company
,下面就是简单的例子

package-com
包装物公司{
val something=“你好,世界。”
}
现在在我看来,这个变量会慢慢地流下来,并且可以从它的子包中访问,但事实并非如此

//向下2层而不是直接子层
包com.company.app
进口公司_
对象模型扩展应用程序{
println(某物)
}

这似乎只适用于导入,这很好,但我希望通过package对象,我可以为整个包定义顶级内容,并使其向下渗透,但不是这样吗?有没有办法让这起作用?我很感激您能深入了解这一点。

您问题中的代码没有导入就可以正常工作。如果您希望当前包之上的所有包对象的定义都向下,则必须修改子包中类的package语句

包对象

package com

package object company {
  val something = "Hello world."
}
在子包com.company.model中初始化

package com
package company
package model
// package com.company.model would not work here!

object Model extends App {
  println(something)
}
这种技术在scala库本身中经常使用。例如,请参见中的package语句:


您使用的是什么scala版本?我能够在
2.11.7
上编译
com.company.Model
,而无需导入这对我来说很有效(无需
import
),正如预期的那样……我实际上是另一层,所以我的包对象位于
com.company
,但我的实际代码位于类似于
com.company.Model.ClassFile
的位置,这不起作用。让我再试一次,确保我没有发疯。是的,在eclipse和Scala 2.11.7中,一个级别的涓涓细流对我不起作用,我认为下面的答案可能是正确的。有趣的是,这并不是我所期望的,但很高兴知道这是可能的!有没有什么洞察到它为什么以这种方式实现?在
package scala
package collection
package immutable