Видите, вы можете написать как 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)
Это, кажется, известная проблема о Eclipse 3.4.
Во время потока, упомянутого выше (июля 2008), добавляя URL, http://eclipseme.org/testversions к списку обновлений программного обеспечения, и обновленный до eclipseMe 1.8 действительно решал проблему.
Вы могли проверить, можно ли обновить eclipseMe и все еще воспроизвести проблему?