質問

うまく使いこなせる方法が求める理解を返すもので割り当て秩序があります。この簡素化をコードしてい:

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会 ついて説明して 収集します。ブロック崩 ます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top