为什么不直接设置值

时间:2011-08-17 03:48:19

标签: scala variable-assignment

我正在阅读project的来源,并在那里找到了这样的代码:

private var _responded: Boolean = _
{
    _responded = false
}

我不明白为什么他这样写,不是和以下一样:

private var _responded = false

它们之间有什么区别?

2 个答案:

答案 0 :(得分:7)

我是该代码的作者。

这样写:

private var _responded = false

在编译时引发此警告(使用旧版本的Scala,似乎没有Scala 2.9的问题):

the initialization is no longer be executed before the superclass is called

您可以谷歌了解该警告以查找更多信息。

答案 1 :(得分:6)

我会在这里猜测,但这看起来很像intellij自动Java到Scala转换所产生的代码。

这个转换器试图尽可能地保持原始Java的语义,因此倾向于生成非常惯用的代码,以及许多嵌套的作用域和可变变量。