2小时速学大数据编程语言 Scala 秘籍

人生处万类,知识最为贤。这篇文章主要讲述2小时速学大数据编程语言 Scala 秘籍相关的知识,希望能为你提供帮助。

作者:幻好
Scala 系列:
??2小时速学大数据编程语言 Scala 秘籍??
??大数据编程语言 Scala 进阶篇??
前言在深入学习大数据框架 Spark 和 Fink 时,为了能够理解其底层源码,就需要学会 Scala 编程语言。Scala 的设计源于 java,但又“高于”Java,是基于 Java 之上增加了一层封装,让程序员可以通过?函数式编程?的方式来开发程序。所以如果学习之前,有 Java 或其他编程语言的基础,2小时学会 Scala 没什么问题。
本文将对 Scala 的安装以及基础语法要点进行总结,以实例的方式帮助快速学会 Scala 语法,能够帮助你读懂相关开源框架的程序逻辑。
Scala介绍Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。
Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。Scala 源代码被编译成 Java 字节码,所以它可以运行于 JVM 之上,并可以调用现有的 Java 类库。
如果在学习 scala 之前学过 java 基础,上手 scala 会更快。
特性?面向对象性?:Scala是一种纯面向对象的语言,每个值都是对象,对象的数据类型以及行为由类和特质描述。
类抽象机制的扩展主要通过子类的继承或者灵活的混入机制。
?函数式编程?:Scala 是一种函数式语言,函数也能当值来使用,提供轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。
安装Scala
由于Scala是基于JVM虚拟机运行的,所以在安装Scala之前,需要提前安装好JDK。
目前Scala有2.0和3.0的版本,使用的较多的版本是2.0版本,以2.13版本为例下载安装。
官网下载链接:??https://www.scala-lang.org/download/scala2.html??
找到需要的环境版本安装包,安装Scala。
Windows中安装系统win10,下载好 ??scala-2.13.8.zip?? 安装文件到本地后解压,然后进入系统属性中,配置环境变量:
  • 首先增加一个变量??SCALA_HOME??? ,并指定到解压目录(bin目录的上级)下??D:\\Soft_install\\scala\\scala-2.13.8??

  • 在 Path 变量中,增加 Scala 的 bin 路径:??%SCALA_HOME%\\bin??

  • 在 CLASSPATH 系统变量中,增加 Scala 的 bin 路径:??; %SCALA_HOME%\\bin??

  • 以上系统变量设置好后,然后进行安装的验证,打开命令窗口,输入:scala

  • 会打印系统安装的Scala版本,并进入 Scala 的命令行环境(与 python 相似)
以上安装并验证完成后,说明 Scala 已经安装成功,可以开始后续开发工作。
Scala基础语法语法说明对于有编程语法基础尤其是 Java 的人来说,上手 scala 是非常快的。
首先,先来一段代码示例:
// 指定文件包
package demo01
// import 引入其他包对象或类, HashMap => JavaHashMap 为重命名成员
import java.util.HashMap => JavaHashMap
// 引入 java.util 中的所有成员
import java.util._


/**
* object 声明 HelloWorld 为一个实力对象
* def 修饰 main 方法,可以直接执行
* println 打印字符串 "Hello, world!"
*/
object HelloWorld
def main(args: Array[String]): Unit =
println("Hello, world!")


Sacala 源码文件以 ??.scala??? 后缀,如果需要执行编写的 Scala 程序,需要先将写的源码编译成字节码文件 ??.class?? ,然后通过 JVM 虚拟机执行。
语法中需要注意和理解的点:
  • 所有类名首字母需要大写,方法名都要小写,文件程序名与类名或程序名一致。
  • Scala 程序默认执行,都是从main 方法开始执行。
  • Scala 程序能够直接引用 Java 库使用。
对于初学者来说,需要理解 Scala 中的一些语法概念:
概念
解释

表示抽象的对象,可以理解描述对象的属性行为的规范
对象
表示类的示例化,类的具体示例,占用内存空间
方法
方法与函数基本相同,用来描述某一通用的过程或流程
数据类型Scala 作为面向对象的语言,其数据类型和 Java 的有者很大的相似性,主要类型如下:
数据类型
描述
Byte
8位有符号补码整数。数值区间为 -128 到 127
Short
16位有符号补码整数。数值区间为 -32768 到 32767
Int
32位有符号补码整数。数值区间为 -2147483648 到 2147483647
Long
64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807
Float
32 位, IEEE 754 标准的单精度浮点数
Double
64 位 IEEE 754 标准的双精度浮点数
Char
16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF
String
字符串,使用双引符号 ??"??? 修饰,多行字符串用符号 ??"""?? 修饰
Boolean
true或false
Unit
表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。
Null
null 或空引用
Nothing
Nothing类型在Scala的类层级的最底端,它是任何其他类型的子类型。
Any
Any是所有其他类的超类
AnyRef
AnyRef类是Scala里所有引用类(reference class)的基类
Scala 中的数据类型一般通过声明指定: ??var str : String = "ok"??? ,通过符号 ??:??? 去指定数据类型;或者直接赋值,就能通过赋值的类型就能指定其数据类型: ??var str = "ok"?? 。
字符串
在 Scala 中,字符串的类型实际上是 Java 中的 ??java.lang.String??? 类,Scala 本身没有 ??String?? 类,所以如果对于会 Java 语法的人,可以简单略过本节。
由于 Scala 直接使用的 Java 中的 ??String??? 类,所以其是不可变对象,具体可参考官方API文档:??https://docs.oracle.com/javase/8/docs/api/java/lang/String.html??
数组
Scala 中提供的用来存放固定大小的数组的同类型元素,具体使用案例如下:
// 定义一个数组
var arr1 : Array[String] = new Array[String](3);
var arr2 = new Array[String](3);
var arr3 = Array("a", "b", "c");
// 数组访问赋值
arr1(0) = "x";
println(arr1(0))
// 定义多维数组 ofDim 指定数组的长度
val arrMultia = Array.ofDim[Int](2 2)
// 合并数组
arr2 =concat( arr1, arr3)

变量Scala 中的变量分为可变和不可变,变量用于引用内存地址,创建后占用一定的内存空间。
可变变量主要用 ??var??? 修饰符修饰:??var x = "temp"??
不可变量(常量)主要用 ??val??? 修饰符修饰:??val x = 1??
object BaseExample
def main(args : Array[String]) : Unit =

// 变量的声明
var change : String = "可变量"// 变量初始化后,可以再次赋值
val noChange : String = "不可变量"// 常量初始化后,再次赋值会编译报错

// 变量声明可以不指定类型,但是必须赋初始值,否则编译报错
var changes = "可变量"
val noChanges = "不可变量"

// 同时声明多个变量
var x,y = 20// 同时给x,y都赋值20



变量语法中,需要?注意和理解?的点:
  • 在声明变量和常量时,不一定要指定数据类型,但是一定要赋值初始值,其类型能够通过赋值推出,所以这块需要注意一下。
  • 在开发中,如果有些变量不会被修改,建议多使用常量修饰,可以防止被错误修改导致程序错误。
运算符Scala 中的运算符基本上和其他编程语言一样,如果有其他语言基础,可以直接跳过这一节。
Scala 中的运算符主要有:
  • 算术运算符
运算符
描述
+
加号
-
减号
*
乘号
/
除号
%
取余
  • 关系运算符
运算符
描述
==
等于
!=
不等于
>
大于
<
小于
> =
大于等于
< =
小于等于
  • 逻辑运算符
运算符
描述
& &
逻辑与
||
逻辑或
!
逻辑非
  • 位运算符
运算符
描述
&
按位与运算符
|
按位或运算符
^
按位异或运算符
~
按位取反运算符
< <
左移动运算符
> >
右移动运算符
【2小时速学大数据编程语言 Scala 秘籍】

    推荐阅读