导图社区 Scala语言基础
Scala语言基础总结思维导图,帮助读者全面了解和掌握Scala编程语言的基本概念和实用技巧。无论你是编程初学者还是有一定经验的开发者,相信都能从本文中获得宝贵的启示和收获。
大数据技术通过一系列先进的技术和方法,从海量数据中提取有价值的信息和知识,为企业和组织提供决策支持。它不仅仅关注数据的收集,更注重数据的存储、处理、分析和可视化,从而帮助用户洞察数据背后的规律和趋势。
Spark的设计与运行原理,Spark主要特点:运行速度快、容易使用、通用性、模块化、运行模式多样、支持各种数据源。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
Scala语言基础
Scala语言概述
计算机的缘起
λ演算被视为最小的通用程序设计语言
编程范式
命令式编程
一种按照指令顺序执行的编程方式
函数式编程
一种以函数为基础的编程范式
Scala简介
Scala运行于Java虚拟机之上,并且兼容现有的Java程序
Scala是一门纯粹的面向对象的语言
Scala也是一门函数式语言
Scala基础知识
基本数据类型和变量
基本数据类型
整数类型
Byte
Short
Int
Long
字符串类型
String
布尔类型
Boolean
字符类型
Char
浮点类型
Float
Double
基本操作
字面量
操作符
算数运算符>关系运算符>逻辑运算符>赋值运算符
在Scala中操作符就是方法
富包装类
每个基本类型都有一个对应的富包装类
变量
val
不可变 声明时必须初始化
var
可变的
I/O
控制台输入输出语句
读写文件
控制结构
条件语句
if
循环语句
while
for
异常处理
对循环的控制
数据结构
数组(Array)
一种可变的、可索引的、元素具有相同类型的数据集合
元组(Tuple)
是对多个不同类型对象的一种简单封装
容器(Collection)
Scala提供了一套丰富的容器库,包括序列、集合、映射等
序列(Sequence)
列表(List)
一种共享相同类型的不可变的对象序列
构造列表常用的方法是通过在已有列表前端增加元素使用的操作符为∷
Scala的list一旦被定义,其值就不能改变 声明list时必须初始化
Scala还定义了一个空列表对象Ni,借助Ni可以将多个元素用操作符“::”连起来初始化一个列表
向量(Vector)
可以实现所有访问操作都是常数时间
Range
一种特殊的、带索引的不可变数字等差序列
可以支持创建不同数据类型的数值序列
集合(Set)
不重复元素的容器 允许快速的找到某个元素
映射(Map)
一系列键值对的容器
键是唯一的,但值不一定是唯一的
迭代器(Iterator)
不是一个容器而是提供了按顺序访问容器元素的数据结构
next
可以返回迭代器的下一个元素
hasNext
用于检测是否还有下一个元素
两个基本操作
面向对象编程基础
类
定义类
类成员的可见性
public
任何作用域内都能直接访问公有成员
private
指对本类型和嵌套类型可见
protected
对本类型和其继承类型都可见
方法的定义方式
方法参数前不能加上val和var,所有的方法参数都是不可变类型
无参数方法的定义式可以省略括号
构造器
Scala类的定义主体就是类的构造器称为主构造器
用来创建对象
主构造器的参数前可以使用val或var关键字
Scala内部将主动为这些参数创造私有字段,并提供对应的访问方法
对象
单例对象
使用 object 关键定义
伴生对象
当一个单例对象和他的同名类一起出现时,这时的单例对象被称为这个同名类的伴生对象
孤立对象
没有同名类的单例对象
apply方法接收构造器的参数并将其变成对象unapply方法接收一个对象并从中提取值
继承
Scala只支持单一继承,而不支持多重继承
抽象类
使用关键字 abstract , 抽象类中的抽象字段必须声明类型,否则会编译出错
扩展类
Option类
Some
有值
None
没有值
参数化类型
在类的定义中包含一个或几个未确定的类型参数信息,其具体的类型将在实例化类时确定
特质(trait)
使用“特质”来实现代码的多重复用,不仅实现了接口的功能,还具备了很多其他的特性
Scala的特质是代码重用的基本单元,可以同时拥有抽象方法和具体方法
一个类只能继承自一个超类,但可以实现多个特质
特质类似于抽象类,既可以包含抽象成员,也可以包含非抽象成员
可以使用extends或with关键字把特质混入类中
模式匹配
match语句
用在需要从多个分支中进行选择的场景
不需要使用break语句来跳出判断,从前往后匹配到一个分支后会自动跳出判断
case类
自动重载许多实用的方法
包
通过在关键词Package后面加大括号可以将程序的不同部分放在不同的包里
函数式编程基础
高阶函数
函数作为参数
函数作为结果返回
闭包
当函数的直行依赖于声明在函数外部的一个或多个变量时则称这个函数为闭包
偏应用函数和柯里化
通过保留已知函数的部分参数来生成新的函数,称为偏应用函数
柯里化
针对容器的操作
遍历操作
foreach()
映射操作
map
一对一映射
flatMap
一对多映射“拍扁”
过滤操作
filter
规约操作
reduce
reduceLeft
reduceRight
fold
foldLeft
foldRight
对容器元素进行两两运算