Scalaのために-理解を返す順序の地図
-
26-09-2019 - |
質問
うまく使いこなせる方法が求める理解を返すもので割り当て秩序があります。この簡素化をコードしてい:
class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result: ListMap[String, Bar] =
for {
foo <- myList
} yield (foo.name, foo.bar)
僕がやっていないかを確認した結果である注文、地図のタプルが返されるかを理解したりしています。
上記のエラー:
error: type mismatch;
found : scala.collection.mutable.Buffer[(String,Bar)]
required: scala.collection.immutable.ListMap[String,Bar]
foo <- myList
この統:
class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result: Predef.Map[String, Bar] =
{
for {
foo <- myList
} yield (foo.name, foo.bar)
} toMap
そのあと、地図な注文は、明示的なtoMapます。
たいのですが実現。
解決
あなたは以下のようにListMapクラスのコンパニオンオブジェクトを使用することによってそれを行う達成することができます:
class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result = ListMap((for(foo <- myList) yield (foo.name, foo.bar)):_*)
他のヒント
の 収集します。ブロック崩 お仲良などの場合、
val result: collection.immutable.ListMap[String, Bar] =
myList.map{ foo => (foo.name, foo.bar) }(collection.breakOut)
であれば重要な使用-理解力、表現でき、
val result: collection.immutable.ListMap[String, Bar] = {
for { foo <- myList } yield (foo.name, foo.bar)
}.map(identity)(collection.breakOut)
Scala2.8会 ついて説明して 収集します。ブロック崩 ます。
所属していません StackOverflow