4

List[(Int,String,Double)]に変換する必要があるクエリ結果を取得しましたMap[String,String](html選択リストに表示するため)

私のハッキングされた解決策は次のとおりです。

val prices = (dao.getPricing flatMap {
  case(id, label, fee) =>
    Map(id.toString -> (label+" $"+fee))
  }).toMap

同じことを達成するためのより良い方法があるはずです...

4

2 に答える 2

9

これはどう?

val prices: Map[String, String] =
  dao.getPricing.map {
    case (id, label, fee) => (id.toString -> (label + " $" + fee))
  }(collection.breakOut)

このメソッドは、からマッピングしている場合でも、型アノテーションのおかげでaが再構築され、中間コレクションの作成を回避することを保証collection.breakOutするインスタンスを提供します。CanBuildFromListMap

于 2012-05-28T13:29:52.703 に答える
8

もう少し簡潔:

val prices =
  dao.getPricing.map { case (id, label, fee) => ( id.toString, label+" $"+fee)} toMap

短い代替案:

val prices =
  dao.getPricing.map { p => ( p._1.toString, p._2+" $"+p._3)} toMap
于 2012-05-28T13:35:20.777 に答える