您的位置:首页 > 其它

scala光速入门第一天

2016-01-02 12:49 176 查看
首先非常荣幸成为王家林老师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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: