你的位置:首页 > 数据库

[数据库]scala光速入门第一天


首先非常荣幸成为王家林老师3000门徒之一,以后此博客将会记录学习王家林老师每节课程的笔记,作业。 
本人邮箱:852667211@qq.com 
电话:15737606315 
下面是第一天的学习笔记 
一:关于scala的产生背景,解决了什么技术问题(内容大部分来自网络,我只写一些个人总结,以后皆如此) 
scala是新一代的jvm语言,是一门多范式编程语言,scala集成函数式编程和面向对象编程的各种优势,成为Java语言后又一有重大价值的编程语言,scala语言目前已经运用在各种领域,目前在大数据领域最火爆的spark框架就是用scala编写的,由于scala集成面向对象与函数式编程的各种优势,这令scala语言成为处理大数据上面的不二选择,scala兼容所有的Java程序,能够调用 java 类库 
二:scala基础语法入门 
1:首先要先装好虚拟机(我用ubuntu14.04),在虚拟机中安装好jvm1.8,设置环境变量,安装scala最新版,运行命令scala启用解释器 
2:scala读取一求值一打印一循环 即REPL操作(这里不方便插入图片) 
3:用var和val定义变量,var定义值可以改变的变量,val定义值不可变的变量 
4:和java一样有7种基本数据类型,scala的基本类型全部是类,可以有方法,例如可以“1.方法名”来调用一个基本数据类型的方法(不方便截图) 
5:scala方法带有两个参数,一个隐式的和一个显式 
6:scala算术运算符和Java基本一样,出来一部分操作运算符可以当作方法用如:a.+(b),这里的+号是方法 
三:控制结构与函数入门 
1:在scala中所有的表达式都有值,void类型在scala中用unit表示 
可以将if/else表达式的值赋值给变量如:val num=if (x > 0) 1 else -1将表达式if(x>0)的值赋给不可变变量num
2:在 Scala中,{}块包含一系列表达式,其结果也是一个表达式。块中最后一个表达式的值就是块的值 
3:输入输出可以用print或println函数 
4:在scala中可以遍历while for循环表达式的所有的值(不方便截图),比java中要方便很多 
5:scala中方法和函数不是同一个定义,要定义函数,你需要给出函数的名称、参数和函数体,必须指定所有参数类型(不方便截图) 
四:Array、Map、Tuple实战(参考王家林老师博客scala学习笔记) 
1:tuple 
元组,元组中可以由很多数据,读取Tuple数据时使用._的方式读取,并且索引从1开始。经常用Tuple接受函数的返回值。 
2:array 
数组使用圆括号()读取,索引从0开始,向左的箭头符号<-是赋值的意思。第二种循环方式是增强for循环的写法。 
Scala中的数组是以Java数组实现的。 
3:map 
只取key或只取value时,需要使用单下划线_作为占位符,使用占位符后不能对其进行引用。 
五:spark案例解释,读源代码,运用前面所学的知识,理解spark内核源码,尝试理解spark内核架构

课后作业(参考快学scala) 
移除一个数组中第一个负数后的所有负数 
最有效方法:把非负数值拷贝到前端 
收集需要保留的下标 
var first = true 
val indexes = for(i<-0 until a.length if first || a(i) >= 0) 
yield{ 
if (a(i) < 0) first = false; 

每次截断数组长度 
for (j <- 0 until indexes.length) a(j) = a(indexes(j)) 
a.trimEnd(a.length - indexes.length)