В scaladoc, BitSet
определяется как расширение Set[Int]
. Так я думал, используя BitSet
как в экземпляре Set[Int]
будет работать, но я получаю несоответствие типов:Почему BitSet требует явного приведения в качестве экземпляра Set [Int]?
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_29).
scala> import collection.BitSet
import collection.BitSet
scala> val b: Set[Int] = BitSet()
<console>:8: error: type mismatch;
found : scala.collection.BitSet
required: Set[Int]
val b: Set[Int] = BitSet()
^
Однако литая работает:
scala> val b: Set[Int] = BitSet().asInstanceOf[Set[Int]]
b: Set[Int] = BitSet()
Так почему же мне нужно явно бросить BitSet
до Set[Int]
, а Set[Int]
- это супертип Set[Int]
?
@jullybobble - Вы все еще смущены. 'collection.Set' и' scala.collection.Set' _ то же самое. Вы имеете в виду 'Set' из' Predef'. –
К сожалению, правильно! Теперь я понял! Спасибо за исправление! –
Примечание: я удалил свой первый комментарий, на который ответил @Rex, потому что это было неправильно и вводило в заблуждение. –