2
我想在Scala中擴展一組整數。基於earlier answer我決定使用SetProxy對象。我現在試圖實現newBuilder
機制,如第二版的第25章中所述,在Scala中編程,並且遇到了麻煩。具體而言,我無法弄清楚要指定給SetBuilder
對象的參數。這是我嘗試過的。如何爲scala集指定newBuilder?
package example
import scala.collection.immutable.{HashSet, SetProxy}
import scala.collection.mutable
case class CustomSet(override val self: Set[Int]) extends SetProxy[Int] {
override def newBuilder[Int, CustomSet] =
new mutable.SetBuilder[Int, CustomSet](CustomSet())
}
object CustomSet {
def apply(values: Int*): CustomSet = CustomSet(HashSet(values.toSeq: _*))
}
這不會編譯。這是錯誤。
scala: type mismatch;
found : example.CustomSet
required: CustomSet
override def newBuilder[Int, CustomSet] = new mutable.SetBuilder[Int, CustomSet](CustomSet())
^
這對我來說很神祕。我已經嘗試了有問題的價值的各種變化,但他們都沒有工作。我如何進行編譯?
除了在斯卡拉編程我已經瀏覽了各種StackOverflow帖子,如this one,但仍然神祕。
代理類看起來像是一種理想的方式(有效地)從具有不希望被分類的實現類的特性中繼承。但是,從Scala 2.11.0開始,它們已被[棄用](http://stackoverflow.com/questions/24312563)。 –