我正在尝试创建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