scala知识点梳理

数据类型

Byte,Short,Int,Long,Float,Double,Char,String,Unit,Null,Nothing,Any,AnyVal,AnyRef。
Nothing:所有类的子类。
Any:所有类的超类。
AnyVal:所有基础数据类型(如Int)类的父类。
AnyRef:所有引用类的父类。

变量声明

val/var

访问修饰符

private/protected/public、作用域保护。
默认情况下都是public,外部类无法访问被嵌套类的私有成员,protected只能被其自身和子类访问。

运算符

算术/关系/逻辑/位/赋值运算符。
位:取反,与,或,异或。

if-else

布尔表达式+语句块

循环

for/do-while/while
break、continue自scala 2.8后支持。
for:分号设置多个区间,循环嵌套,相当于多重循环;循环过滤,使用if过滤一些元素,多个条件分号分隔;yield,将for循环返回值作为变量存储。

方法与函数

函数是scala核心,函数式编程语言,val定义。方法用def定义。
函数传名调用/函数可变参数/默认参数值/内嵌函数/偏应用函数/指定函数参数名/递归函数/高阶函数/匿名函数/函数柯里化
函数传名调用:后计算参数表达式的值,变量名和类型之间使用=>设置传名调用。
偏应用函数:参数中有不变的量。
指定函数参数名:与默认参数值共用,更灵活。
递归函数:结束标志,计算部。
高阶函数:调用其他函数的函数,可将其他函数作为参数或返回结果。
函数柯里化:将原接受两个参数的函数变成接受一个参数的函数,并返回接收原第二个参数为参数的函数。

数组

多维数组:Array.ofDim[Int](3,3)
常用:empty,iterate,fill,ofDim,range,tabulate。

闭包

是一个函数,返回值依赖于声明在函数外部的一个或多个变量。

collection(集合)

Set/List/Map/元组/Option/Iterator。
List:常用,Nil,::,head,tail,isEmpty,:::,concat,fill,reverse,tabulate(通过给定的函数来创建列表),mkString。
Set:务必注意可变和不可变集合,可变集合在scala.collection.mutable.Set包中,add或remove操作时,不可变Set会产生一个新的Set。常用:min,max,&和intersect,&~(两集合取差集)和diff,++,product,subsetOf(子集),等。
Map:可迭代键值对,也称HashTable。可变Map(scala.collection.mutable.Map)可修改。常用:keys,values,isEmpty,get,iterator,addString(将不可变集合的所有元素添加到字符串缓冲区),clear,contains,filter,filterKeys,find等。
元素:最大长度22。迭代:Tuple.productIterator.foreach(=>)。toString打印所有元素。交换:Tuple.swap。

Iterator

常用:next,hasNext,buffered,indexWhere,padTo,patch,toBuffer,tolterable,zip[B](that:Iterator[B]):Iterator[(A,B)](对偶元组合并)。

类和对象

类不声明为public。
继承:extends-with。混入Trait。
伴生对象:apply(不用new创建即可新对象),unapply。

Trait

Trait:更像Java抽象类,可定义属性和方法的实现。特征也可以有构造器,由字段的初始化和其他特征体中的语句构成。这些语句在任何混入该特征的对象在构造时会被执行。
构造顺序:超类,特征,特征由左到右,每个特征当中父特征被先构造,多个特征共有一个父特征则父特征不会被重复构造,子类。

模式匹配

match-case,相当于java当中swich-case-break。
使用样例类:经过优化,以用于模式匹配。类似java中的枚举和swich-case结合用法。样例类自动发生:构造器的每个参数都成为val,除非被显式声明为var,不推荐如此;在伴生对象中提供了apply方法,构造新对象可不用new;提供unapply方法可使模式匹配可以工作;生成toString,equals,hashCode和copy方法,除非显式给出这些方法的定义。

正则表达式

scala.util.matching.Regex
常用:findFirstIn;findAllIn;replaceFirstIn;(re),匹配re并捕获文本到自动命名的组中;(?:re),匹配re,不捕获文本,也不给此分组分配组号;(?>re),贪婪子表达式;\B,匹配不是单词开头或结束的位置;\G,当前搜索的开头。

异常处理

若抛出的异常不在catch字句中,则会被升级到调用处。

提取器

是以传递给它的对象中提取出构造该对象的参数。提取器是一个带有unapply方法的对象,算是对apply的反向,unapply接收一个对象,然后从对象中提取值,提取的值通常是用来构造该对象的值。

文件I/O

使用的是java.io.File。
从屏幕读取用户输入:StdIn.readLine()。
从文件读取内容:Source.fromFile(文件名),需导入scala.io._。

链接: https://www.runoob.com/scala/scala-tutorial.html.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值