我没有在Scala中添加要列表的元素。我不能使用可变列表,我看到了可以将元素添加到不可变的示例,但它在我的情况下不起作用。 好的,所以我的代码功能很简单。它正在返回权力清单。
def power_fun ( number : Int, power: Int ) : List[Int] = {
def power_list( number_tmp : Int,
power_tmp : Int,
list_tmp : List[Int] ) : List[Int] = {
if(power != 0) {
power_list( number_tmp * number_tmp,
power_tmp - 1,
list_tmp :: number_tmp ) // this return error "value :: not member of Int)
}
else
return list_tmp
}
return power_list(number, power, List[Int]())
}
我无法弄清楚如何将元素添加到列表中。 你能帮助我,如何设置更改列表(使用新elem)作为参数?
答案 0 :(得分:3)
list_tmp :: number_tmp
它不起作用,因为::
方法是右关联的,因此需要右侧的列表。所有以:
结尾的方法都是右关联的。
有多种方法可以将元素添加到列表中。
number_tmp :: list_tmp // adds number_tmp at start of new list.
list_tmp :+ number_tmp // appends at the end of the list.
number_tmp +: list_tmp // adds number at the start of the list.
scala> val l = List(1, 2)
l: List[Int] = List(1, 2)
scala> l :+ 3 // append
res1: List[Int] = List(1, 2, 3)
scala> 3 +: l // prepend
res2: List[Int] = List(3, 1, 2)
scala> 3 :: l // prepend
res3: List[Int] = List(3, 1, 2)
scala> l.::(3) // or you can use dot-style method invocation
res4: List[Int] = List(3, 1, 2)