web-dev-qa-db-ja.com

リストからの収量文字列[Char]

連結して文字列として1つのforループで返す文字のl:List [Char]があります。

私はこれを試しました

val x: String = for(i <- list) yield(i)

につながる

 error: type mismatch;  
 found   : List[Char]  
 required: String

では、どうすれば利回りの結果タイプを変更できますか?

ありがとう!

31
xyz

これを試して:

val x: String = list.mkString

この構文:

for (i <- list) yield i

構文糖:

list.map(i => i)

したがって、元のlistの変更されていないコピーが返されます。

69

次のものを使用できます。

val x: String = (for(i <- list) yield(i))(collection.breakOut)

BreakOutの詳細については、 この質問 を参照してください。

3

3つのmkStringオーバーロードのいずれかを使用できます。基本的には、各要素のtoStringメソッドによってコレクションをフラットな文字列に変換します。オーバーロードは、各要素の間にカスタムのセパレーターを追加します。

Iterableのメソッドであるため、MapまたはSetでも使用できます。

詳細は http://www.scala-lang.org/api/2.7.2/scala/Iterable.html を参照してください。

1
jfuentes