Scala 'this'和'self'在简单的应用程序中不起作用



显然是标题中的 scala 新手(使用 2.12.1 版(。我正在 IntelliJ 中编写我的第一个应用程序。我已经读过关于Java中的Scala等价物到this。我已经尝试了thisselfclassOf[]和IntelliJ正在抱怨,即使我忽略IntelliJ,代码也没有编译。这是我所拥有的:

import ch.qos.logback.classic.Logger
object Main extends App {
val logger = Logger[Main] 
}

记录器包在 SBT 中正确导入。但是,它无法解析符号Main。我尝试将其粘贴在包装中以使其不那么普遍,然后做类似Logger[me.justin.Main]的事情,但这也不起作用。

我还认为扩展应用程序可能会导致一些问题,但我认为这在我使用的 scala 版本中已修复?也许它甚至不适用?

我都被谷歌搜索出来了。请帮忙!

你被 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]

相关内容

最新更新