Підкреслення шкали - ПОМИЛКА: відсутній тип параметра для розширеної функції


88

Я знаю, що з цього приводу було досить багато запитань, але я створив простий приклад, який, на мою думку, повинен працювати, але все ще ні, і не впевнений, що розумію, чому

val myStrings = new Array[String](3)
// do some string initialization

// this works
myStrings.foreach(println(_))


// ERROR: missing parameter type for expanded function
myStrings.foreach(println(_.toString))

Хтось може пояснити, чому друге твердження не складається?


4
Ще простіше:myStrings.foreach (println)
користувач невідомий

Відповіді:


120

Він розширюється до:

myStrings.foreach(println(x => x.toString))

Ти хочеш:

myStrings.foreach(x => println(x.toString))

Синтаксис заповнювача анонімних функцій замінює найменший з можливих виразів функцією.



Чому для аргументу myStrings.foreach(println(_))автоматично включається toStringаргумент println?
Кевін Мередіт

1
@Kevi Meredith println викликає toString () будь-якого об'єкта, який передано
krookedking

1
Синтаксис заповнювачем для анонімних функцій замінює найменше можливе , що містить вираз з функцією. допоміг мені з сумнівами, які я висловив у цьому питанні: stackoverflow.com/questions/37589210/…
GA1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.