首页 > 解决方案 > Scala推断出最小上限

问题描述

斯卡拉 2.12。以下代码

val mapBuilder = Map.newBuilder[String, String]
val setBuilder = Set.newBuilder[String]

List(Option("")).foreach {
  case Some(_) => mapBuilder += "" -> ""
  case None => setBuilder += ""
}

不编译 - 编译器无法推断出两个构建器的最小上限(Uin foreach[U](f: A => U)):

type arguments [String,Iterable[java.io.Serializable] with String => Any with scala.collection.generic.Subtractable[String,Equals]] do not conform to trait Subtractable's type parameter bounds [A,+Repr <: scala.collection.generic.Subtractable[A,Repr]]

注释foreachwithAny解决了这个问题:

List(Option("")).foreach[Any] {
...

这是预期的行为吗?

标签: scalainferred-type

解决方案


推荐阅读