Scala特性
在很多地方Scala都很像Java,也是静态类型语言,但是比Java更为函数式编程,这句话主要从三句话就可以理解“一切都是对象”,“一切都是函数”以及“一切都是表达式”三方面理解。
1、一切都是对象
Scala里一切都是对象,这大概和Python很像,因为即便是数字1都有一系列的方法,所以我们可以调用1.toDouble将Int类型的1转换为Double类型的1。
2、一切都是函数
表现为可以重载操作符,跟Python很像,在一定程度上Scala是Java和Python生的孩子,只不过遗传基因比较大的卵子是Java提供的,而比较小的那颗精子则是Python提供的。
3、一切都是表达式
在Scala里,一切都是表达式,即使像if(){}else{}这样的语句块也是有返回值的
一、选择Scala版本
根据Spark官网建议,我们最好下载Scala 2.13版本,建议采用跟Spark版本匹配的Scala
![](https://img-blog.csdnimg.cn/img_convert/88d226cdb703856fae3b5f570b70af16.png)
到Scala官网下载Scala
Scala2.13.10下载网址:https://www.scala-lang.org/download/2.13.10.html
![](https://img-blog.csdnimg.cn/img_convert/f3cc5bdec7cef46469050effa22e7ea7.png)
![](https://img-blog.csdnimg.cn/img_convert/af94d83b3b6d1f0501b719cada8918da.png)
单击【scala-2.13.10.msi】超链接,将scala安装程序下载到本地
![](https://img-blog.csdnimg.cn/img_convert/b8640299c1292c3ee6d2151387019a18.png)
双击安装程序图标,进入安装向导,按提示进行操作,完成Scala的安装
![](https://img-blog.csdnimg.cn/img_convert/f9caaa0c29d35b845614669811406be9.gif)
安装到默认的位置:C:\Program Files (x86)\scala,当然你也可以安装到其它位置
![](https://img-blog.csdnimg.cn/img_convert/0d2fb65562ed6687931bb14e7e8a4558.png)
通常Scala安装完成后会自动将Scala的bin目录的路径添加到系统Path变量中。若Path变量中无该路径,则需要手动添加
![](https://img-blog.csdnimg.cn/img_convert/788928375d2ed90c3e62fcc9bfdb1dac.png)
二、测试Scala是否安装成功
1、查看Scala版本
启动命令行窗口,执行scala -version命令,若能正确输出当前Scala版本信息,则说明安装成功
![](https://img-blog.csdnimg.cn/img_convert/cfbc4a1a43463a0bd8b1c7fd34f621b8.png)
在命令行提示后输入scala,则会进入Scala的命令行模式,在此可以编写Scala表达式和程序
![](https://img-blog.csdnimg.cn/img_convert/74ff9e007b44a5bbb29a9efafe91b85b.png)
val - value:用于定义Scala常量
var - variable:用于定义Scala变量
![](https://img-blog.csdnimg.cn/img_convert/7714644feca9f9de07a761401dbcd8e0.png)
三、Linux上安装Scala
到Scala官网下载Scala
Scala2.13.10下载网址:https://www.scala-lang.org/download/2.13.10.html
![](https://img-blog.csdnimg.cn/img_convert/ec0f01793018168a0682b914e08604fd.png)
单击【scala-2.13.10.tgz】超链接,将scala安装包下载到本地
![](https://img-blog.csdnimg.cn/img_convert/a615afb5bef0a08a62dbdbdcf41db5d5.png)
安装Scala
1、登录ied虚拟机
利用FinalShell登录master虚拟机
![](https://img-blog.csdnimg.cn/img_convert/c741e06c8a1ed7b9c7876d5f211f1515.png)
上传scala安装包到master虚拟机
进入/opt目录,将scala安装包上传到该目录
![](https://img-blog.csdnimg.cn/img_convert/2a46ed69434fba275be29ec63747b8ed.png)
解压scala安装包到指定目录
执行命令:tar -zxvf scala-2.13.10.tgz -C /usr/local
配置Scala环境变量
执行命令:vim /etc/profile
![](https://img-blog.csdnimg.cn/img_convert/a0d6ebf4e6a122f3ee16f6360cc64b0a.png)
export SCALA_HOME=/usr/local/scala-2.13.10
export PATH=$SCALA_HOME/bin:$PATH
存盘退出后,执行命令:source /etc/profile,让环境配置生效
测试Scala是否安装成功
查看Scala版本
执行scala -version命令,若能正确输出当前Scala版本信息,则说明安装成功
![](https://img-blog.csdnimg.cn/img_convert/36b142234df06c7b15eeaaac6946d9a0.png)
报错,原因在于没有安装JDK(运行Scala要用到Java虚拟机)
上传、安装、配置JDK
启动Scala,执行语句
在命令行提示后输入scala,则会进入Scala的命令行模式,在此可以编写Scala表达式和程序
演示语句块的返回值,语句块最后一条语句的值就是整个语句块的值
![](https://img-blog.csdnimg.cn/img_convert/3456cc5cb3ba363d7e503f57d7e77618.png)
演示if-else结构的返回值
![](https://img-blog.csdnimg.cn/img_convert/bd28a177d70a36d07c30578b00e93c31.png)
计算1 + 2 + 3 + …… + 100的值
![](https://img-blog.csdnimg.cn/img_convert/2653cc50cf3b434ac965a63f21e40df7.png)
计算1 + 3 + 5 + …… + 99的值
![](https://img-blog.csdnimg.cn/img_convert/7bce4d658085dc37ba96d0c51643efbc.jpeg)
打印字符直角三角形
![](https://img-blog.csdnimg.cn/img_convert/ea00822cfb030a88d83bcd85647de9f6.png)
![](https://img-blog.csdnimg.cn/img_convert/366f688e3a94dfb44e46cf1a9ac63d01.jpeg)
四、Scala的使用
Scala可以在交互模式和编译模式两种方式下运行
(一)交互模式
在命令行下直接敲命令或通过命令直接执行程序文件
1、命令行方式
直接在scala>提示符后敲代码执行
![](https://img-blog.csdnimg.cn/img_convert/808ce32e3ae35c941edc4fe196724b1d.png)
在scala>提示符之后输入:quit (或者按快捷键:Ctrl + D),退出scala交互模式
![](https://img-blog.csdnimg.cn/img_convert/ab0cb38a9503b2016b6a081bab8bc7fd.png)
2、文件方式
将代码写在xxx.scala文件中,通过scala xxx.scala执行文件中的代码
创建/scala_work目录,进入该目录,执行命令:vim sum.scala
![](https://img-blog.csdnimg.cn/img_convert/42c9ef9c627eddb5f38552c00306e52c.png)
执行命令:scala sum.scala
![](https://img-blog.csdnimg.cn/img_convert/893cf2d60a1bdce29eb45d6781b51400.jpeg)
(二)编译模式
1、创建源程序
在\scala_work目录里创建文件HelloWorld.scala
命令:vim HelloWorld.scala
![](https://img-blog.csdnimg.cn/img_convert/fa154061fe165e3c39b061738176749c.png)
![](https://img-blog.csdnimg.cn/img_convert/c2ff384c10039e0a8e5852b23f1d31d0.png)
2、编译成字节码
利用scalac将HelloWorld.scala编译成字节码文件HelloWorld.class
解释执行对象
执行命令:scala HelloWorld,运行程序,查看结果
![](https://img-blog.csdnimg.cn/img_convert/f469e501e5f63f31154c3c302f5fdf4a.jpeg)