class 无限参数 scala

class with unlimited arguments scala

是否可以创建一个 Scala class,它是一个对象数组,在数组中有未定义数量的对象。

例如,我可以使用 var

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

这工作正常,但我想要一个 class 这样我就可以在 it.At 中添加一堆方法,我可以在 () 中手动添加参数但数量可能会有所不同取决于对象。有没有办法不设置限制?背景知识我是一个 scala 初学者,目前我正在通过 udemy 课程学习,所以请多多包涵。任何帮助将不胜感激

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

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

你可以把buffer包装成River,将River的+=等方法重定向到buffer,然后添加你需要的所有其他函数,例如:

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

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

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

 }