如何映射泛型集合并创建Map

时间:2016-05-24 12:22:08

标签: scala generics dictionary zip type-parameter

我正在尝试创建Map [String,SLAMetricValue [_]]但是编译器抱怨错过了SLAMetricValue的类型参数。

case class SLAMetricValue[MetricQuantity <: squants.Quantity[MetricQuantity] ](amount: BigDecimal, units: UnitOfMeasure[MetricQuantity]) { ... }

object SLAMetricValue{

import SLAMetric._

  def construct(amount: BigDecimal, metricId: SLAMetricId): SLAMetricValue[_ >: Time with TransferRate with PartQuantity with DataAmount with Dimensionless <: Quantity[_ >: Time with TransferRate with PartQuantity with DataAmount with Dimensionless]] =
    metricId match {
      case id if id == Jitter.id => new SLAMetricValue(amount, Milliseconds)
      case id if id == Throughput.id => new SLAMetricValueTest(amount, BitsPerSecond)
      case _ => ... 
   }
}
  val map1 = metrics.zip(1 to metrics.size).map { case (metric, value) => {
     (metric.id.id.toString, SLAMetricValue.construct(BigDecimal(value), metrics.head.id))
  }}
  val metricIdToMetricValue = map1.toMap

我已设法使其适用于zip,但不知道有什么区别以及如何在没有zip的情况下使其有效?

(1 to metrics.size).zip(metricIdToIndex).toMap

0 个答案:

没有答案