//share list object
private List<String> strList = new ArrayList<>();
void add(String el)
{
strList.add(e);
}
static void main(String[] args) {
{
add("36 Chambers");
out.println(strList.get(0));//assume only element
}
同样,如果我在Scala中模拟相同的语法 - 我最终得到java.lang.IndexOutOfBoundsException: 0
。如何用简单的Scala实现类似?
private var strList: List[String] = Nil
def add(el: String) {
strList :+ el
}
def main(args: Array[String]) {
add("36 Chambers")
println(s(0)) //assume only element
}
答案 0 :(得分:1)
严格回答您的问题:
private var strList: List[String] = Nil
def add(el: String) {
strList = el :: strList;
}
您使用的操作符错误。您需要使用::
。并且您需要更新内联,因为List
具有不可变长度。
我正在切换el
和strList
,因为::
是右关联的,这意味着该方法来自::
运算符右侧的对象。 / p>
此外,::
运算符将执行前置,这意味着您的元素将以相反的顺序。
你可以在结束时(在使用之前等)调用reverse,或者如果你想在语义上类似于Java ArrayList
,也许可以考虑Scala ListBuffer
,一个可以追加的可变集合。
import scala.collection.mutable.ListBuffer;
private var strList: ListBuffer[String] = Nil
def add(el: String) {
strList += el;
}