文字列中のキーワードを変換して文字列を返すコードを書きたい
変換したいキーワードが複数ある時Mapをforeachで回せば良いじゃんと思って下のコードを書きました、ところがforeachは返り値が無くてうまくいきませんでした。
val keywords = Map("foo" -> "bar", "baz" -> "qux")
val text = "foo is baz."
val changedText = keywords.foreach { map => text.replace(map._1, map._2) }
println(changedText)
そこでfoldLeftを使って書き直すと
val keywords = Map("foo" -> "bar", "baz" -> "qux")
val text = "foo is baz."
val changedText = keywords.foldLeft(text){ (tex, map) => tex.replace(map._1, map._2) }
println(changedText)
と書けて
bar is qux.
うまく変換された文字列が返ってきてます、foldLeft便利ですね。