Видите, вы можете написать как List(1,2,3).reduce((x, y) => x + y)
или List(1,2,3).reduce(_ + _)
. Здесь (x, y) => x + y
и _ + _
- функции, первая более очевидная, а вторая - функция, где каждое подчеркивание заменяется одним из параметров.
То, что вы делаете здесь, (c, _) => _:::c
пытается объединить оба. Но, на самом деле, вы просто говорите компилятору scala:
- У меня есть функция двух агентов:
c
, а другой сбрасывается.
- Эта функция возвращает функцию без указанного типа. (Пример:
(Int, Int) => (Int => Int) = (a: Int, _) => _ * 2
)
Что вы можете сделать здесь, это
переписать, используя только подчеркивание:
ls.foldLeft(List.empty[Int])(_.::(_))
или переписать, не отбрасывая:
ls.foldLeft(List.empty[Int])((acc, cur) => cur :: acc)