2
我有一個使用參數化類作爲Map
的鍵類型的問題。首先創建的參數化類:2.7中的Scala類型失敗:是否有解決方法?
scala> sealed abstract class Foo[T]{ def t: T }
defined class Foo
現在創建的這些跨未知參數的一些假想的集合:
scala> var l: List[Foo[_]] = Nil
l: List[Foo[_]] = List()
現在創建一個映射到存儲這些在:
scala> var mm: Map[Foo[_], Any] = Map.empty
mm: Map[Foo[_],Any] = Map()
現在嘗試填充地圖
scala> l.foreach { foo: Foo[_] =>
| mm += (foo -> "BAR")
| }
給了我以下編譯器錯誤:
<console>:9: error: type mismatch; found : foo.type (with underlying type Foo[_]) required: Foo[_$1] where type _$1 mm += (foo -> "BAR") ^
這將編譯在2.8就好了。有沒有什麼解決方法讓它在2.7中工作?
編輯 - 這也爲我工作:
var mm: Map[AnyRef, Any] = Map.empty //note not Foo[_]
scala> l.foreach { foo: Foo[_] =>
| mm += ((foo: AnyRef) -> "BAR") //still have to tell compiler foo is an AnyRef
| }
我愚蠢的沒有嘗試 - 請參閱編輯爲我工作的東西 – 2010-04-13 08:42:43