具有无限参数scala的类

时间:2018-04-21 18:54:58

标签: arrays scala class user-defined-functions scala-collections

无论如何都要创建一个Scala类,它是一个对象Array,它在数组中有一个未定义数量的对象。

例如我可以使用var

做我想做的事
var River1 = new ArrayBuffer[RiverReach]
River1.+=(rr1,rr2,rr3)

这个工作正常,但我想要一个类,所以我可以添加一堆方法。目前我可以在()中手动添加参数,但数量可能会因对象而异。有没有办法不设定限制?上下文我是一个scala初学者,我正在通过udemy课程学习,所以请耐心等待。任何帮助将不胜感激

当前设置。我已经使用ArrayBuffer作为它的可变性,我想要将数组中所有元素的值加到头部。但那是一个不同页面的问题。

class River[T>:ArrayBuffer[RiverReach]]() {
  //bunch of methods
 }

2 个答案:

答案 0 :(得分:3)

您可以将缓冲区包装到River,将River的+=和其他方法重定向到缓冲区,然后添加所需的所有其他功能,例如:

case class RiverBeach(altitude: Int)

class River {

  private val buffer = new ListBuffer[RiverBeach]()

  def +=(riverBeach: RiverBeach): River = {
    buffer += riverBeach
    this
  }

  def ++=(riverBeach: RiverBeach*): River = {
    buffer ++= riverBeach
    this
  }

  def size: Int = buffer.size

  // your methods

}

val river = new River()

river += RiverBeach(1)
river ++= (RiverBeach(2), RiverBeach(3), RiverBeach(4))

println(river.size) // 4

答案 1 :(得分:1)

Mike Allens的想法是正确的,经过更多阅读更好的解决方案就是简单地扩展Arraybuffer

class River extends Arraybuffer[RiverReach] {
 //bunch of methods 

 }