【问题标题】:Scala companion class warningScala伴随类警告
【发布时间】:2015-04-10 05:57:10
【问题描述】:

我是 Scala 编程的新手,有人可以解释一下警告原因吗?

我试图找到原因,这似乎是一个很大的修复:https://issues.scala-lang.org/browse/SI-6439

那么为什么我会收到此警告?

【问题讨论】:

    标签: scala


    【解决方案1】:

    这是特定于 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
    

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

        猜你喜欢
        • 2017-01-08
        • 1970-01-01
        • 2018-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-24
        • 1970-01-01
        相关资源
        最近更新 更多