Я играю в Scala, чтобы попытаться освоить его, поэтому этот пример кода просто академический.
Я пытаюсь передать изменяемый список функции, чтобы эта функция выполняла над ней работу, а затем после вызова функции я могу использовать обновленный список.
var data: List[Int] = List()
// Call to function to fill a list
data = initList(data)
// Output only 0-100
data.foreach( num => if (num < 100) { println(num) })
def initList(var data: List[Int]) : List[Int] = {
for ( i <- 0 to 1000 )
{
data = i :: data
}
data = data.reverse
data
}
Единственный вышеприведенный код, который не компилируется, — это var
в def initList()
, а поскольку data — это val
, я не могу выполнять какие-либо изменения в нем внутри функции.
Позвольте мне начать с того, что я знаю, что в Scala мутаторы обычно не одобряются, поэтому я не только открыт для прямого ответа на мой вопрос, но и открыт для лучших способов сделать это полностью. Иногда в проектах есть фрагмент данных, который перемещается с места на место для обновления, но если вы не можете передать данные в функцию для изменения, то что может быть хорошей альтернативой?
Я прочитал учебники и погуглил для этого, я предполагаю, что не могу найти много об этом, потому что обычно это не делается в Scala.