2015-02-01 2 views
0

Я не могу добавить элементы в список в 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]()) 
} 

Я не могу понять, как добавить элемент в список. Не могли бы вы помочь мне, как установить измененный список (с новым элем) в качестве аргумента?

+0

Вы можете использовать изменяемый список, если хотите, но предлагается не кстати. –

+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) 
+0

Вы можете использовать его неправильно, если вы используете оператор точки. 'list_tmp.: :(number_tmp)' –

+0

@JustinPihony True. обновил ответ. благодаря! –

+0

Спасибо! Вы мне очень помогаете! –

Смежные вопросы