scala的新功能(使用版本2.12.1)显然来自标题。我正在用IntelliJ编写我的第一个应用程序。我已经阅读了Java中与Scala等效的this
。我已经尝试this
,self
,classOf[]
并且IntelliJ正在抱怨,即使我忽略了IntelliJ,代码也没有编译。这就是我所拥有的:
import ch.qos.logback.classic.Logger
object Main extends App {
val logger = Logger[Main]
}
记录器包正在SBT中正确导入。但是它无法解析符号Main
。我尝试将其粘贴在一个软件包中以使其不那么普遍,然后执行类似Logger[me.justin.Main]
的操作,但这也不起作用。
我也认为可能扩展App会导致一些问题,但我认为这已经修复了我正在使用的scala版本?也许它甚至不适用?
我全都用Google搜索了。请帮忙!
答案 0 :(得分:1)
您可能会因Scala的对象工作而惹恼。我们假设我们有一个班级Foo
和一个同伴对象:
class Foo
object Foo
如果我们想要一个该课程的记录器,我们会做一件显而易见的事情:
val logger = Logger[Foo] // `Foo` here is the type of the class.
但是如果我们想要引用对象的类型呢?我们必须从类的类型中消除歧义。答案是在对象上使用特殊的type
成员:
val logger = Logger[Foo.type] // `Foo.type` here is the type of the object.
所以在你的情况下:
val logger = Logger[Main.type]