第十章 Scala 容器基礎(五):肯定集合類型(範型)

解決方案:

    咱們先來看一個例子,若是你不制定集合類型,那麼Scala會自動給List指定一個Double類型scala

scala> val l = List(1, 2.0, 33D, 400L)
l: List[Double] = List(1.0, 2.0, 33.0, 400.0)

    若是你想指定集合類型爲Number或者AnyVal,那麼你必須在集合聲明後的[]中加入你指定的類型。
code

scala> val l = List[Number](1, 2.0, 33D, 400L)
l: List[Number] = List(1, 2.0, 33.0, 400)

scala> val l = List[AnyVal](1, 2.0, 33D, 400L)
l: List[AnyVal] = List(1, 2.0, 33.0, 400)
討論:

    經過手動設定,你能夠指定一個集合的類型。一般狀況下,這用於集合內容爲混合類型活着有着多層結構的類型,好比繼承,實現等。下面咱們來看一個帶有層級關係的例子:繼承

scala> trait Animal
defined trait Animal

scala> trait FurryAnimal extends Animal
defined trait FurryAnimal

scala> case class Dog(name: String) extends Animal
defined class Dog

scala> case class Cat(name: String) extends Animal
defined class Cat

    咱們使用Dog和Cat的失利來建立一個Sequencyit

scala> val l = Array(Cat("Tom"), Dog("DaHuang"))
l: Array[Product with Serializable with Animal] = Array(Cat(Tom), Dog(DaHuang))

    這正如你看到的,Scala自動給出的集合類型是Array[Product with Serializable with Animal],若是你想指定集合類型是Array[Animal],那麼你必須手動指定:class

scala> val l = Array[Animal](Cat("Tom"), Dog("DaHuang"))
l: Array[Animal] = Array(Cat(Tom), Dog(DaHuang))
相關文章
相關標籤/搜索