Scala函数式编程专题--scala基础语法介绍

2020-06-29 14:01:24王冬梅

上次我们介绍了函数式编程的好处,并使用scala写了一个小小的例子帮助大家理解,从这里开始我将真正开始介绍scala编程的一些内容。

这里会先重点介绍scala的一些语法。当然,这里是假设你有一些java或者python的基础,毕竟大部分人不会将scala当作第一门学习编程的语言。

不过这些语法知识记不住也没关系,本身语法这种东西就应该在使用中被记住。这里写这篇的目的也只是梳理一遍,方便大家对语法有个初步的印象,后面可以随时查询。

PS:所使用的版本是scala 2.11.8,那我们开始吧

一.scala两种运行方式

首先,scala有两种运行方式,分别是在交互式环境运行,以及通过脚本的方式运行。先运行一下吧,在scala安装目录下有一个bin文件夹,在这个文件夹双击scala.bat(Windows系统),就可以启动scala交互环境。当然,一般在安装scala,都会将“scala目录/bin”加入到系统的Path变量中,这个时候直接运行cmd,然后输入scala就可以了。

因为scala也是运行在jvm平台上的,所以用脚本方式的话,类似于java那样,需要先编译再执行。但是一般我们都会使用IDE来处理。通过我个人是更加喜欢idea的,只要下载免费的社区版就可以满足日常开发需求。

二.scala变量和类型

2.1 变量

首先,我们先来用一个例子来看看具体语法。在交互式环境中输出hello world。

//声明一个字符串
scala> val str = "Hello world"
str: String = Hello world

//打印
scala> println(str)
Hello world

相信大家看一眼就能明白这两行代码是干嘛的,那我就说一点看不出来的。

scala声明一个变量可以用val和var。val意为这个变量是不可变的,var意为这个变量是可变的。

scala> val num = 1; //声明一个不可变的数值型变量
num: Int = 1

scala> num = 2	//因为不可变,所以要更改时,出错了
<console>:12: error: reassignment to val
  num = 2
   ^

scala> var num_var = 1; //声明一个可变的数值型变量
num_var: Int = 1

scala> num_var = 2;	//可以改变
num_var: Int = 2

从功能上来说,类似于java的final关键字。而且scala语言倾向于让你多使用val,而少用var。

为什么呢?

因为能够更方便得使用并发,在java的并发编程中,最喜欢的就是final的变量,因为它都是不变的,随便怎么用就怎么用。而scala所支持的函数式编程,天然就适合异步和并发,所以做了这样的处理,包括scala的集合类,默认也是不可变的类型,如果要使用可变的集合,需要手动指定。

2.2 scala数据类型

说完了变量,再来说说scala的数据类型。这里直接上一张图。