大数据入门之Scala学习——基础篇

Scala学习——基础篇

一、环境搭建
1、启动Scala解释器
(1)安装Scala;
(2)确保scala/bin目录位于系统PATH中;
(3)打开命令行窗口,键入scala并按Enter键。
2、IDE(based on Eclipse IDE)
(1)下载相应版本 IDE;
(2)解压。
在IDE中新建Scala Worksheet(跟REPL类似)。
二、基础
1、变量
(1)三种变量修饰符
val 定义immutable variable(常量);
var 定义 mutable variable(变量);
lazy val(只有当该变量首次被使用的时候才会取值) ;
可以不显示指定变量类型,因为Scala会自动进行类型推导。
2、Scala的类型体系
(1)常用类型:Byte、Char、Short、Int、Long、Float、Double和Boolean。
与Java不同的是,这些类型是类。Scala并不可以区分基本类型和引用类型。
在Scala中,我们用方法来做数值类型之间的转换,99.44.toInt得到99。
3、算术和操作符重载
操作符:+-/%和&|^>><<。注意:这些操作符实际上都是方法,且在Scala中不提供++,--操作符。
三、控制结构与函数
1、条件表达式
(1)if/else表达式;
如:val s=if(x>0)1 else -1
(2)?:表达式;
如:x>0?1:-1
说明:Scala中没有switch语句,不过它有强大的模式匹配机制。
注意:REPL在同一时间只能看到一行代码。如果想在REPL中粘帖成块代码,可使用粘贴模式,键入:paste。把代码块粘贴进去,然后按Ctrl+D。
2、循环
(1)while循环;
如:
while(n>0){ r=r*n n-=1 }
(2)for循环和for推导式
for(i <- 表达式)
如:
for(i<-1 to n)println(i) //i将遍历1to n中的所有值 for(i<-1 to 9;j <- 1 to 9)println(i*10+j) //多重迭代 for(i <-1 to 9 if i!=5;j <- 1 to 9 if i!=j)println(i*10+j) //守卫 for(i <-1 to 3;from =4-j;j <-from to 3) println(i*10+j) //变量 val r=for(i <- 1 to n)yield i*i //r为1,4,9,…… for((x,y) <- pairs)println(x+” ”+y) //使用提取器析构对偶和其他值

3、函数
如:

def abs(x:Double)=if(x>=0)x else x
def fac(n:Int)={
val r=1
for(i <- 1 to n)r=r*i
r    //块中最后一个表达式的值就是函数的返回值
}
def fac(n:Int):Int=if(n <=0)1 else n*fac(n-1)  //递归函数,要指定返回类型

四、数组相关操作
1、定长数组Array 如:
val nums=new ArrayInt //10个整数的数组,初始化为0
val a=new ArrayString //10个元素的字符串数组,初始化为null
val matrix=Array.ofDimDouble //3行4列的二维数组
2、变长数组:数组缓冲ArrayBuffer 如:

import scala.collection.mutable.ArrayBuffer
val b=ArrayBuffer[Int]()  //一个空的数组缓冲
b +=1  //用+=在尾端添加元素,ArrayBuffer(1)
b +=(1,2,3,5)   //ArrayBuffer(1,1,2,3,5)
b ++=Array(8,13,21)   //可用++=在尾端追加任何集合
b.trimEnd(5)   //移除最后5个元素, ArrayBuffer(1,1,2)
b.insert(2,7,8,9)   //在下标2前面插入7,8,9;ArrayBuffer(1,1,7,8,9,2)
b.remove(2)    // 移除下标为2的元素,ArrayBuffer(1,1,8,9,2)
b.remove(2,3)  //从下标为2的元素开始移除3个元素,ArrayBuffer(1,1)

3、数组遍历
(1)for(elem <- a)
println(elem) //其中a为数组名

(2)for(i <- 0 until a.length)
println(i+”:”+a[i])
注:0 until 10 //Range(0,1,2,3,4,5,6,7,8,9)
若想要每两个一跳,可让i这样遍历
0 until(a.length,2) //Range(0,2,4,.……)
若想要从数组的尾端开始,可让i这样遍历
0 until(a.length) .reverse //Range(.……,2,1,0)
五、映射
1、构造映射

val scores =Map(“Alice ->10,”Bob ->3,”Cindy ->8)  
//不可变Map[String,Int]
val scores=scala.collection.mutable.Map(“Alice ->10,”Bob ->3,”Cindy ->8)  
//可变Map[String,Int]
val scores=scala.collection.mutable.HashMap[String ,Int]  
//空的Map[String,Int]

2、获取映射中的值

val bobScore=scores(“Bob”)  //如果映射中不包含Bob键,则会抛出异常

改进后

val bobScore=if(scores.contains(“Bob”)) scores(“Bob”) else 0

该行代码的快捷写法如下:

val bobScore=scores.getOrElse(“Bob”,0)

3、更新映射中的值
假定scores是可变的,

scores(“Bob”)=10  //若Bob键存在,则更新Bob键对应的值;否则添加Bob键值对。
scores +=(“Bob ->10,”Fred ->7)  //用+=添加多个关系
scores -=”Alice  //用-=移除某个键值对

4、迭代映射
for((k,v) <- 映射) 处理k和v
五、模式匹配

val x=r match{
case 0 =>…  //匹配值
case ch if someProperty(ch) =>  //守卫
case e:Employee =>… //匹配运行期类型
case (x,y) =>…  //使用提取器析构对偶和其他值
case Some(v) =>…  //样例类具有提取器功能
case 0 ::tail =>… //提取器的中置表示法产出对偶
case _ =>   //缺省样例
}
try{ . . .  }catch{
case _:MalformedURLException =>println(“Bad URL”)
case ex:IOException =>ex.printStackTrace()
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、Scala核心编程课程简介近年来随着大数据的兴起,大数据核心框架Spark和Kafka也受到到广泛关注, Spark底层是Scala实现的, 因此也带火了Scala语言,目前Scala被全球知名公司(如:谷歌、百度、阿里、Twitter、京东等)广泛用于Spark开发。新一代的物联网时代到来,会对大数据应用人才的需求越加紧迫。 尚硅谷网罗和整合了学员很喜爱的师资,打造出专注于Spark开发的Scala课程,我们讲解Scala核心编程技术,同时也讲解编程思想、设计模式和Scala底层实现,让您有豁然开朗的感受。二、课程内容和目标本课程重点讲解Scala核心编程,内容包括: Scala语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数、函数柯里化、偏函数、参数推断、控制抽象、Trait、面向对象编程、异常处理、惰性函数、Akka及Actor模型、Spark Master和Worker通讯、隐式转换、隐式参数、工厂模式、单例模式、观察者模式、装饰者模式、代理模式、泛型、上下界、视图界定、上下文界定、协变逆变不变和源码剖析。通过系统全面的学习,学员能掌握Scala编程思想和Scala底层机制,为进一步学习Spark打下坚实基础。三、谁适合学1.希望以较低的投入和风险,来了解自己是否适合转型从事Spark开发的求职人员。2.有一定的Java基础,或者自学过一些Java书籍与视频资料,想系统掌握Scala语言的程序员。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值