【发布时间】:2015-04-10 05:57:10
【问题描述】:
我是 Scala 编程的新手,有人可以解释一下警告原因吗?
我试图找到原因,这似乎是一个很大的修复:https://issues.scala-lang.org/browse/SI-6439
那么为什么我会收到此警告?
【问题讨论】:
标签: scala
我是 Scala 编程的新手,有人可以解释一下警告原因吗?
我试图找到原因,这似乎是一个很大的修复:https://issues.scala-lang.org/browse/SI-6439
那么为什么我会收到此警告?
【问题讨论】:
标签: scala
这是特定于 REPL(读取评估打印循环)的,因为它无法知道用户输入何时结束。
使用:paste 绕过它:
scala> class A {}
defined class A
scala> object A {}
defined object A
warning: previously defined class A is not a companion to object A.
Companions must be defined together; you may wish to use :paste mode for this.
scala> :paste
// Entering paste mode (ctrl-D to finish)
class A {}
object A {}
// Exiting paste mode, now interpreting.
defined class A
defined object A
【讨论】:
Companion 类及其对象必须定义在同一个文件中。
所以你可以将你的类和对象写在一个文件中,然后在 REPL 中使用:paste 你可以运行你的代码。不会出现警告。
scala> :paste
// Entering paste mode (ctrl-D to finish)
class Student(sid: Int, sname: String) {
val id = sid
val name = sname
override def toString() = this.id + "," + this.name
}
object Student {
def displayDetails(st: Student) = {
println("Student Details : " + st.id + "," + st.name)
}
}
// Exiting paste mode, now interpreting.
defined class Student
defined object Student
【讨论】: