【发布时间】:2015-08-04 16:54:27
【问题描述】:
在 Scala 中,将非嵌套 trait 声明为私有或包私有有什么区别。即,有什么区别
private MyTrait { ... }
和
private[enclosingpackage] MyTrait { ... }
我知道有不同,因为如果我添加包限定符,我可以消除某些编译错误。例如,如果我将包限定符添加到 Service 特征的定义中,这两个编译错误就会消失:
[error] /Users/dalan/s/local/eclipse/jeep/runcible/src/main/scala/
org/gaffa/gpp/runcible/httpserver/HttpServer.scala:146:
private trait Service escapes its defining scope as part of type
org.gaffa.gpp.runcible.httpserver.Service
[error] object HttpServer extends App with Service {
[error] ^
[error] /Users/dalan/s/local/eclipse/jeep/runcible/src/main/scala/org/
gaffa/gpp/runcible/httpserver/HttpServer.scala:156: not found: value routes
[error] Http().bindAndHandle(routes, config.getString("http.interface"),
config.getInt("http.port"))
[error] ^
[error] two errors found
在其中一条错误消息中抱怨的 routes val 位于 Service 特征中,该特征正在被 HttpServer 单例 object“扩展”。
感谢您的帮助!
附:所有有问题的代码都在同一个文件中,以防万一。
【问题讨论】:
标签: scala