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
}
是否可以创建一个 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
}