如何将更改列表设置为参数

时间:2015-02-01 17:17:07

标签: scala

我没有在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)作为参数?

1 个答案:

答案 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)