1

次のような文字列のリストがあります

val myList = List("apple", "orange", "pear")

「1)リンゴ 2)オレンジ 3)ナシ」のような文字列に変換したいと思います。for ループを書くこともできますが、Scala ではこのようなことをワンライナーで行うべきだと思います。私が思いついた最高のワンライナーは

val myString = myList.map(s => "1) " + s).mkString(" ")

しかし、これは「1) リンゴ 1) オレンジ 1) ナシ」という結果になります。リストのマッピング中に値をインクリメントするにはどうすればよいですか?

4

4 に答える 4

8

簡単です(文字列補間を使用したscala 2.10 ):

myList.zipWithIndex.map { case (cases, i) => s"${i + 1}) $cases" }
于 2013-06-06T18:15:30.070 に答える
1

実際、プラス記号の欠落はありません。それを試してみてください。私のマイナーな変更は、最後に mkString を追加することです。

myList.zipWithIndex.map { case (cases, i) => s"${i + 1}) $cases" }.mkString(" ")
于 2013-06-06T18:28:16.633 に答える