我创建了以下函数:
def mapToPers(inTuple: (String, String, String),
v: ((Double, Double, Double, Double, Double),
Map[Double,
(Double, Double, Double, Double, Double)])) = {
val (prod: String, market: String, week: String) = inTuple
val result = for (cumePeriod <- cumePeriods) yield {
val (per, weekList) = cumePeriod
if (weekList.contains(week)) ((prod, market, per), v)
}
result
}当我调用它时,它会产生类型不匹配的错误:
资源路径类型类型不匹配;发现:((字符串,字符串,字符串),((双,双),scala.collection.immutable.IterableAny,(双,双) => MapDouble:(字符串,字符串,字符串),((双,双),MapDouble,(双,双) => =>
发布于 2015-11-02 17:14:43
显然,嵌套元组存在问题。检查括号:
发现:
(
(String, String, String),
(
(Double, Double, Double, Double, Double),
Map[Double,(Double, Double, Double, Double, Double)]
)
) => scala.collection.immutable.Iterable[Any] 所需:
(
(
(String, String, String),
(
(Double, Double, Double, Double, Double),
Map[Double,(Double, Double, Double, Double, Double)]
)
)
) => TraversableOnce[?]所以我又看到一个层次的筑巢。考虑到非常令人困惑的类型,很难发现,我建议您在这里使用一些案例类。
编辑:顺便说一下,我发现了别的东西。您正在使用的if没有其他的,因此,对于理解的理解将不知道产生确切的结果。您可能只想在检查之后才放弃:
val result = for {
(per, week_list) <- cumePeriods
if week_list.contains(week)
}
yield ((prod, market, per), v)https://stackoverflow.com/questions/33481814
复制相似问题