Как применить flatMap к списку кортежей (Int, String) в Scala? - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть следующие List кортежей в Scala:

var a : List[(Int,String)] = List()
a = a:+((1,"bla bla bla"))
a = a:+((2,"la la la"))
a = a:+((3,"bla la bla"))

, которые выглядят так:

print(a)
List((1,bla bla bla), (2,la la la), (3,bla la bla))

Я хочу применить flatMap функциючтобы создать новый список из списка a, который содержит только строки из кортежа, к которому он добавляет слово «добавлено». Поэтому результат должен быть:

List(bla bla blaappended, la la laappended, bla la blaappended)

Может ли кто-нибудь помочь мне понять, как я могу это сделать? Я новичок в Scala, и я не могу обернуть голову вокруг этого. Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 11 декабря 2019

Вы не хотите, чтобы flatMap вы хотели просто map, потому что вы хотите выполнять только преобразование один в один.
Кроме того, для таких ситуаций сопоставление с образцом очень полезно.
(Кстати, подумайте о прочтении всего тура и других базовых учебных пособий)

// Avoid mutability ;)
val list : List[(Int,String)] = List(
  1 -> "bla bla bla",
  2 -> "la la la",
  3 -> "bla la bla"
)

val result = list.map {
  case (_, str) => s"${str} appended"
}
1 голос
/ 11 декабря 2019

Вам не нужно flatMap, просто map достаточно

val result = a.map(t => t._2 + "appended")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...