искра использует подчеркивание в качестве параметра для RDD.flatmap или карты

Вот мой data:RDD[Array[String]] в искре. И я хочу подсчитать сумму всех длин элементов в данных.

Например, data:(Array(1,2),Array(1,2,3)). Я хочу получить сумму: 2+3=5; Сначала я использую :data.flatMap(_).count(),

Ошибка :

ошибка: отсутствует тип параметра для расширенной функции ((x$1) => data.flatMap(x$1))

Но когда я заменяю _ на x=>x и пишу: data.flatMap(x=>x).count(), все работает. Поэтому меня смущает _ . Я думаю, что в scala _ можно назвать фактическим типом параметра, верно?


person Richard. Zhu    schedule 13.09.2017    source источник
comment
Не знаю, почему это дубликат, короткий ответ: _ не x => x, а _ + 1 это x => x + 1, а _.toArray[Int] это x => x.toArray[Int]. Если вы используете последний в своем коде, он достигнет того же результата. Эмпирическое правило состоит в том, чтобы использовать только _ и только в том случае, если вам нужно применить один оператор, а не два и не ноль.   -  person yuxiang.li    schedule 06.04.2018


Ответы (1)


См. вопрос здесь.

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

person Azure Heights    schedule 13.09.2017