爲什麼不能編譯這個函數?相交斯卡拉集與子集
case class MyType(n: Int)
def intersection(s1: Set[MyType], s2: Set[_ <: MyType]) =
(s1 & s2)
我得到以下錯誤:
error: type mismatch; found : Set[_$1] where type _$1 <: MyType required: scala.collection.GenSet[MyType] Note: _$1 <: MyType, but trait GenSet is invariant in type A. You may wish to investigate a wildcard type such as
_ <: MyType
. (SLS 3.2.10) (w & r)
有沒有一種簡單的方法來「提升」,而無需使用asInstanceOf輸入設置[MyType的]第二個參數?
感謝您的解釋。然而,現在我不知道爲什麼這個聲明類型正確:Set(new Object())&Set(「string」) – tba
@tba這是一個非常好的觀察。我在這裏問它:http://stackoverflow.com/questions/18029746/weird-behavior-of-function-in-set。謝謝 – Jatin