从零开始学Scala系列(四)之数组集合1
来源:互联网 发布:淘宝塑唐玩具是正品吗 编辑:程序博客网 时间:2024/06/01 12:23
该小节主要是简单介绍在scala中使用数组和集合
1 数组
- 数组声明和初始化
还是以前一样,先来个简单地例子:
初看是不是和java类型的语言类似, 当然还有更简单的用法。
注: 0 to 2
是scala中RichInt提供的方法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
还有until… 但不包含end,比如 0 until 2 就是 0,1 当然还可以指定步长step, 想更多深入了解的可以看RichInt.scala原码。
- 1
- 2
- 3
scala中都是使用函数表示 + - * / 也不例外。用空格表示 0 to 2
只是更加简易而已,而这也是scala所追求的的,尽量做到代码简易可读性高。
好了 , 来看看数组声明初始化简易的做法:
是不是简单太多了 , 其实这是隐式调用了Array.scala中apply方法而已
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
有兴趣的可以去看看原码。
2 List的使用
scala 中的list是immutable(不可变的),不像是java中list元素是可重新赋值的,也就是可变的。
- 1
这里也是隐式调用了List.scala中apply方法
- 1
scala 中的List有很多有用的方法, 这里只是简单介绍几个:
- :::
- ::
::: 是两个List之间拼接的方法,而且是右操作符(注:在scala中一般以冒号结尾的方法都是右操作符,比如上面这两个), 看例子:
- 1
- 2
- 3
- 4
- 5
- 6
右操作符意味着操作符由右操作数起调用方法的作用,还是上面那段代码,下面另一种写法:
- 1
- 2
- 3
- 4
- 5
- 6
:: 方法是向List前面追加元素, 例子如下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
通常 使用List时候 刚开始并不知道向其中添加什么元素,这是就需要定义一个空List,再来添加元素,在List.scala中有Nil对象就是空List:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
下面有个简单的例子:
- 1
- 2
- 3
- 4
- 5
声明初始化一个List后, 我们就需要使用它, 比如获取某个下标的元素在java中使用list.get(0)
这种方式,而在scala中可以更加精简list(0)
, 当然List中对于取头一个元素还有一个独立的方法head:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
tail 方法
List中也有tail方法, 但是它和head方法不一样,并不是返回List中的最后一个元素, 而是返回除去第一个元素包含剩余元素的新List(当原List只有一个元素时,返回空List):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
当然scala中List还有很多其他有用方法,就不一一赘述了。
2 Tuple(元组)的使用
tuple在scala中也是immutable(不可变的), 但它不像List, 它可以包含不同类型的元素,有几个元素就称为几元组
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
可以看看scala中的元组原码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
目前scala中一共有22元组,当然如果 需要更多 也可以进行模仿自定义。
这节就先到这了,下小节Set和Map,其实有了这节的概念 就很简单了,无外乎多练,多敲代码。
- 从零开始学Scala系列(四)之数组集合1
- 从零开始学Scala系列(四)之数组集合1
- 从零开始学Scala系列(五)之集合2--Set和Map
- 从零开始学Scala系列(五)之集合2--Set和Map
- 从零开始学Scala系列(二)之初识Scala
- 从零开始学Scala系列(二)之初识Scala
- 从零开始学Scala系列(三)之初识循环分支结构
- 从零开始学Scala系列(三)之初识循环分支结构
- 从零开始学Scala系列(一)之环境安装及IDE选择安装
- 从零开始学Scala系列(一)之环境安装及IDE选择安装
- 从零开始学Scala系列(六)之类(Classes)和对象(Objects)
- 从零开始学Scala系列(六)之类(Classes)和对象(Objects)
- 快学scala之数组操作
- 从零开始学Java之出入门卫管理系统(四)
- RxAndroid从零开始学之四(常见操作符)
- [Wondgirl]从零开始学React Native之View(四)
- 从零开始学Android自定义View之动画系列——属性动画(1)
- Scala 集合数组操作
- HTML之DOM之我见
- SQL数据库 存储过程、索引、视图与临时表
- 计算机网络--地址的划分问题
- LeetCode No.41 First Missing Positive 题解
- while 死循环->小坑
- 从零开始学Scala系列(四)之数组集合1
- PIXHAWK+XPLANE-10硬件在环仿真
- laravel+easywechat微信扫码登录网站
- 使用muduo编写聊天室
- 第22节:富文本框和editor编辑器的处理
- 获取本地视频文件的缩略图
- html和CSS基础学习(三)
- mysql在linux下的安装
- dspic33E单片机IOPUWR复位原因之一 程序监控定时器