【问题标题】:Scala compilation error斯卡拉编译错误
【发布时间】:2012-03-17 08:00:36
【问题描述】:

无法弄清楚 StrangeIntQueue 扩展队列有什么问题,为什么会出现错误“构造函数队列的参数不足:(leading: Int)list.Lister.Queue[Int]. Unspecified value parameterleading”。如何指定?

  class Queue[+T](
    private val leading: T
  ) {
    def enqueue[U >: T](x: U) =
      new Queue[U](leading: U) // ...
  }

  class StrangeIntQueue(private val leading: Int) extends Queue[Int] {
    override def enqueue(x: Int) = {
      println(math.sqrt(x))
      super.enqueue(x)
    }
  }

【问题讨论】:

    标签: scala compiler-errors


    【解决方案1】:

    StrangeIntQueue 扩展的类Queue 的主构造函数接受一个参数,但您没有为参数传递任何内容。试试这个:

    class StrangeIntQueue(leading: Int) extends Queue[Int](leading) {
      // ...
    }
    

    【讨论】:

      【解决方案2】:
      extends Queue[Int](leading)
      

      即使看起来“很明显”该怎么做,你也必须传递论点。

      还请注意,由于您已将 leading 声明为私有,因此您实际上将获得两份副本:一份用于 StrangeIntQueue,一份用于Queue。 (否则你可以只使用StrangeIntQueue(leading0: Int) extends Queue[Int](leading0) 并在里面使用leading 的继承副本。)

      【讨论】:

        猜你喜欢
        • 2013-05-07
        • 2017-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多