博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十章 Scala 容器基础(五):确定集合类型(范型)
阅读量:7044 次
发布时间:2019-06-28

本文共 1097 字,大约阅读时间需要 3 分钟。

hot3.png

解决方案:

    我们先来看一个例子,如果你不制定集合类型,那么Scala会自动给List指定一个Double类型

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

    如果你想指定集合类型为Number或者AnyVal,那么你必须在集合声明后的[]中加入你指定的类型。

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 Animaldefined trait Animalscala> trait FurryAnimal extends Animaldefined trait FurryAnimalscala> case class Dog(name: String) extends Animaldefined class Dogscala> case class Cat(name: String) extends Animaldefined class Cat

    我们使用Dog和Cat的失利来创建一个Sequency

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],那么你必须手动指定:

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

转载于:https://my.oschina.net/nenusoul/blog/656111

你可能感兴趣的文章
java.math.BigDecimal cannot be cast to java.lang.String
查看>>
学习曲线
查看>>
android-第一行代码
查看>>
项目Beta冲刺(团队6/7)
查看>>
2019-05-20 Java学习日记之String类型
查看>>
js小练习——页面实现重置、反选、全选三个按钮的功能
查看>>
laravel----------自动生成模型,控制器,视图的操作步骤。
查看>>
DIR和dirent结构体
查看>>
Angualr+asp.net core webapi+efcore系列
查看>>
R语言编程
查看>>
Nginx配置详解
查看>>
POJ 1659 Frogs' Neighborhood
查看>>
博客打开慢?请禁用WordPress默认的谷歌字体!
查看>>
如何循环枚举类型
查看>>
FAQ软件卸载
查看>>
谈谈多线程的思维方式
查看>>
BeanFactory和FactoryBean的区别
查看>>
Eclipse安装git
查看>>
ASP.NET缓存全解析2:页面输出缓存 转自网络原文作者李天平
查看>>
sql的书写顺序
查看>>