Как в Scala выполнять дополнительные операции со строками при использовании foreach в List? - PullRequest
2 голосов
/ 13 августа 2011

Например, чтобы напечатать все, что я могу сделать

list.foreach(println(_))

Как бы я сделал эквивалент

list.foreach(println(_ + "mystring"))

Ответы [ 3 ]

9 голосов
/ 13 августа 2011

Чтобы исправить второй пример, вы можете назвать аргумент функции следующим образом:

list.foreach(x => println(x + "mystring"))

Кстати, в качестве альтернативы вы можете сначала map свой список, а затем распечатать каждый элемент в нем:

list map (_ + "mystring") foreach println

Это даст те же результаты.

4 голосов
/ 13 августа 2011

Просто немного дополнительной информации к двум другим ответам:

  1. list.foreach(println(_)) в основном сокращенно от list.foreach(s => println(s)).

  2. list.foreach(println(_ + "mystring")) синтаксически правильный, но он эквивалентен list.foreach(println(s => s + "mystring")) (и компилятор не может выяснить, какой тип s) вместо того, что вы хотите.

3 голосов
/ 13 августа 2011

Вы можете объявить переменную:

list.foreach(s => println(s + "mystring"))

или вы можете объявить метод, который делает то, что вы хотите, а затем вызвать его:

def myprint(s: String) = println(s + "mystring"))
list.foreach(myprint)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...