簡體   English   中英

具有無限參數的類scala

[英]class with unlimited arguments scala

無論如何,有沒有要創建一個Scala類,它是一個對象Array,該對象在數組中具有未定義的對象數。

例如我可以使用var做我想做的事

var River1 = new ArrayBuffer[RiverReach]
River1.+=(rr1,rr2,rr3)

這可以正常工作,但我想要一個類,因此我可以向它添加一堆方法。目前,我可以在()中手動添加參數,但是數量可能會隨對象的不同而不同。 有沒有一種方法可以不設置限制? 背景信息我是scala初學者,目前正在通過udemy課程進行學習,請耐心等待。 任何幫助,將不勝感激

當前設置。 我已經將ArrayBuffer用作其可變對象,並且我想對數組中所有元素到頭部的值求和。 但這就是換一個頁面的問題。

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

您可以將緩沖區包裝到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

Mike Allens的想法是正確的,經過更多閱讀后,更好的解決方案是簡單地擴展Arraybuffer

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

 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM