«Отсутствует тип параметра для расширенной функции» при использовании _ (подчеркивание)? - PullRequest
6 голосов
/ 04 января 2012

Одна проблема, с которой я постоянно сталкиваюсь - это лямбда-выражения. Например

JarBuilder.findContainingJar(clazz).foreach {userJars = userJars + _ }

выдает ошибку вроде:

missing parameter type for expanded function ((x$1) => userJars.$plus(x$1))

Тем не менее, если я сделаю расширение сам:

JarBuilder.findContainingJar(clazz).foreach {x => userJars = userJars + x }

Работает нормально.

Это ошибка в Scala? Или я делаю что-то ужасно неправильно?

1 Ответ

6 голосов
/ 04 января 2012

Использование синтаксиса для анонимных функций ограничено выражениями . В вашем коде вы пытаетесь использовать подстановочный знак в операторе присваивания, который отличается от выражения.

Если вы внимательно посмотрите на ошибку, вы увидите, что выражение в правой части вашего назначения - это то, что расширяется в анонимную функцию.

Учитывая то, что вы пытаетесь достичь, вы можете рассмотреть следующее

userJars = userJars ++ JarBuilder.findContainingJar(clazz)
...