Trong scaladoc, BitSet
được định nghĩa là mở rộng Set[Int]
. Vì vậy, tôi nghĩ rằng sử dụng một BitSet
như trong trường hợp của Set[Int]
sẽ làm việc, nhưng tôi nhận được một loại không phù hợp:Tại sao BitSet yêu cầu một diễn viên rõ ràng được coi là một thể hiện của 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()
^
Tuy nhiên một dàn diễn viên hoạt động:
scala> val b: Set[Int] = BitSet().asInstanceOf[Set[Int]]
b: Set[Int] = BitSet()
Vậy tại sao tôi cần phải explicitely cast một BitSet
đến một số Set[Int]
trong khi Set[Int]
là siêu loại Set[Int]
?
@jullybobble - Bạn vẫn còn bối rối. 'collection.Set' và' scala.collection.Set' là _exactly cùng một điều_. Ý bạn là 'Set' từ' Predef'. –
Rất tiếc, đúng! Bây giờ tôi đã nhận nó! Cảm ơn vì sự đúng đắn của bạn! –
Lưu ý: Tôi đã xóa nhận xét đầu tiên của mình về @Rex đã trả lời vì nó sai và gây nhầm lẫn. –