![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Scala
forerunner123
这个作者很懒,什么都没留下…
展开
-
scala集合的一些操作符号
/*集合的一些操作符号:col :+ elem 将元素添加到集合尾部 Seqcol +: elem 将元素添加到集合头部 Seqcol + elem 将元素添加到集合尾部 Set、Mapcol + (elem1,elem2) 将其它集合添加到集合尾部 Set、Mapcol - elem 将元素从集合中去除 Set、Map、ArrayBufferco...原创 2020-04-21 14:37:15 · 337 阅读 · 0 评论 -
Scala偏函数、执行操作系统命令、提取器unapply方法
1.偏函数偏函数是PartialFunction[A,B]类的一个实例,其内包含两个方法apply()/isDefineAt(),在某些场景下对需求并不明确,对于明确的部分通过case 表达式指定,不明确部分先保留,在取值时通过isDefineAt()判断是否存在。object Score extends App { val getStudentgrade: PartialFunction...原创 2020-04-21 10:35:01 · 116 阅读 · 0 评论 -
文件操作实战
import scala.io.Source//文件遍历object Score extends App { //读文件 val source = Source.fromFile("c://test.txt","UTF-8") //BufferedSource对象 val lines = source.getLines() //Iterator[String] lines.t...原创 2020-04-20 15:31:18 · 177 阅读 · 0 评论 -
scala的继承层级
scala最顶端两个trait是Nothing 和 Null ,Null trait唯一对象是null;其次是继承Nothing trait的Any类Any类定义了isInstanceOf和asInstanceOf等方法,以及equals、hashCode等对象方法,类似于java的Object类AnyRef类继承Any,增加了多线程方法,如wait,notify、synchronized等...原创 2020-04-20 15:28:00 · 117 阅读 · 0 评论 -
重写field的提前定义
//new一个子类的过程:子类构造函数调用父类构造函数,父类field初始化后,再初始化子类的object Score extends App { class Student { val classNumber : Int = 10 //classScores的初始化依赖于classNumber val classScores: Array[Int] = new Ar...原创 2020-04-20 15:21:35 · 96 阅读 · 0 评论 -
扩大内部类的作用域
一般来讲内部类的作用域只在外部类包围的范围内,即内部类属于实例化对象:举例:class OuterClass{ class Student(val name: String){} //ArrayBuffer[Student] 中的Student类是对象内部类,即区分c1.Student类型和c2.Student类型 val students = new ArrayBu...原创 2020-04-20 14:30:44 · 213 阅读 · 0 评论 -
多维数组、Tuple拉练操作、运行java代码
//二维 val doubleArray = Array.ofDim[Int](3,4) doubleArray(0)(0) = 2 //不规则多维数组 val multiDimArr = new Array[Array[Int]](3) multiDimArr(0) = Array(3,4,5) multiDimArr(1) = Array(3,7,9,0,1)...原创 2020-04-20 14:20:36 · 130 阅读 · 0 评论 -
scala跳出循环的3种方式
1.使用boolean变量val flag = truevar res =0var i = 0while(flag){ res+=n n+=1 if(n ==5){ flag=false }}for( i<- 0 until 10 if flag){ res += i if(i==4) flag =false}2. 使用returndef add()...原创 2020-04-20 13:58:30 · 286 阅读 · 0 评论 -
Scala Actor
scala的Actor类似于java中的多线程编程,scala中的Actor尽可能的避免锁和共享状态,从而避免多线程并发时出现资源争夺的情况,进而提升多线程编程的性能。spark中使用的分布式多线程框架为Akka,核心是actor。1. actor的创建、启动和消息收发scala提供了Actor trait用于多线程编程,类似于java中的Thread和Runnable,通过实现Actor ...原创 2020-04-20 13:32:58 · 138 阅读 · 0 评论 -
Scala的隐式转换
scala隐式转换可以将某种类型的对象转换成其他类型的对象。核心在于隐式转换函数:implicit conversion function。隐式转换函数只要在编写的程序内引入,就会被自动调用。scala会根据隐式转换函数的签名,在程序中使用到隐式转换函数接收的参数类型定义的对象时,会自动将其传入隐式转换函数,并转换为另外一种类型的对象并返回。隐式转换函数由scala自动调用,其命名不影响使用...原创 2020-04-20 13:29:24 · 108 阅读 · 0 评论 -
scala类型参数:类似于java中的泛型概念
1.泛型类泛型类,就是在类的声明中定义一些泛型类型,然后再类内部(field、method)就可以使用这些泛型类型使用泛型类,通常是需要对类中的某些成员,比如method中的参数,field,进行统一的类型限制,这样可以保证程序健壮性泛型类的使用,如创建类对象,将类型参数替换为实际类型。 或者直接给使用了泛型类型的field赋值,scala会自动类型推断。案例://指定泛型类T,并统一参...原创 2020-04-20 10:44:10 · 171 阅读 · 0 评论 -
Scala模式匹配
模式匹配是scala中非常强大的功能,类似于java中的switch case;在scala中模式匹配用match case 表达,不仅可以匹配变量值,还可以匹配变量类型、Array/List 值、case class 、Option等。1.模式匹配基本语法scala 使用match … case …替代swich case,可匹配变量类型、集合元素、有值或者无值,只要有一个case分支满足条...原创 2020-04-15 10:11:56 · 86 阅读 · 0 评论