Функциональный способ изменения состояния внутри функций высшего порядка scala - PullRequest
0 голосов
/ 12 ноября 2018

Рассмотрим следующий код,

 1 var ip = ArrayBuffer[String]()
 2 ip += "1"
 3 println(ip)
 4 ip.clear()
 5 (1 to 10).foreach(ip += ("1"))
 6 println(ip)

Здесь в строке № 5 использование переменной ip внутри функции более высокого порядка приводит к исключению. Я знаю, что использование var не рекомендуется, но я хочу знать, как использовать переменные внутри функций более высокого порядка. Или есть альтернатива mange state.

1 Ответ

0 голосов
/ 12 ноября 2018

работают следующие работы:

(1 to 10).foreach(_ => ip += "1")

foldLeft более функционален, и вы можете обойтись без изменяемого состояния:

(1 to 10).foldLeft(List.empty[String]){
  case (acc, _) => "1" :: acc
}

Выход:

List[String] = List(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
...