错误的前向引用,但 Scala 脚本运行完美
Wrong Forward Reference yet Scala script runs perfectly
我正在使用最新版本的 IntelliJ 的 Scala 插件并有以下这段代码,其目的是允许枚举 class Count
:
class Count() {
val id = Count.id()
override def toString = s"Count$id"
}
object Count {
var n = -1
def id() = { n += 1; n }
}
println(Vector(new Count, new Count, new Count))
当引用伴随对象的方法 id()
时,IntelliJ 给我一个前向引用错误,但脚本编译完美,产生输出 Vector(Count0, Count1, Count2)
。事实上,我只是在 运行 脚本成功后偶然发现了这个错误。给出了什么?
Scala 工作表尝试分别编译每条指令。
如果您将所有代码包装到一个对象中(以强制 scala 编译器整体处理整个代码)- 不会有这样的异常:
object a {
class Count() {
val id = Count.id()
override def toString = s"Count$id"
}
object Count {
var n = -1
def id() = {
n += 1; n
}
}
println(Vector(new Count, new Count, new Count))
}
我正在使用最新版本的 IntelliJ 的 Scala 插件并有以下这段代码,其目的是允许枚举 class Count
:
class Count() {
val id = Count.id()
override def toString = s"Count$id"
}
object Count {
var n = -1
def id() = { n += 1; n }
}
println(Vector(new Count, new Count, new Count))
当引用伴随对象的方法 id()
时,IntelliJ 给我一个前向引用错误,但脚本编译完美,产生输出 Vector(Count0, Count1, Count2)
。事实上,我只是在 运行 脚本成功后偶然发现了这个错误。给出了什么?
Scala 工作表尝试分别编译每条指令。 如果您将所有代码包装到一个对象中(以强制 scala 编译器整体处理整个代码)- 不会有这样的异常:
object a {
class Count() {
val id = Count.id()
override def toString = s"Count$id"
}
object Count {
var n = -1
def id() = {
n += 1; n
}
}
println(Vector(new Count, new Count, new Count))
}