我正在尝试向scala中的范围添加元素。为什么以下代码片段失败?正确的方法是什么?
import scala.collection.mutable.ListBuffer
val range = Range(1, 10)
val buffer = ListBuffer()
buffer.appendAll(range)
答案 0 :(得分:1)
您尚未告知编译器buffer
将保留哪些类型的元素。
val buffer = ListBuffer[Int]()
之后,appendAll()
应该可以正常工作。但是您的代码中没有什么可以“将元素添加到范围”(或列表,如问题标题错误地指出的那样)。那是不同的操作。
您可以预先添加或添加一个新元素,但是会返回IndexedSeq[Int]
。
0 +: range
range :+ 14
如果您想要一个真实的Range
,则可以构建一个新的。{p>
val biggerRange = Range(range.start - 1 , range.end + 2, range.step)
答案 1 :(得分:-1)
ListBuffer appenAll需要可遍历的对象。 https://www.scala-lang.org/api/current/scala/collection/TraversableOnce.html
解决方法是使用-
val buffer = ListBuffer[Int]()
for (i <- range ) buffer.append(i)