小标
2019-02-25
来源 :
阅读 1199
评论 0
摘要:本文主要向大家介绍了【云计算】新手小白学习scala,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。
本文主要向大家介绍了【云计算】新手小白学习scala,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

1、了解Scala 2、安装Scala开发环境 3、变量申明 4、条件表达式和块表达式 5、Scala的循环 6、方法的定义 7、函数的定义 8、Scala的元 9、Scala的数组
1、了解Scala这门语言 2、掌握开发环境搭建 3、掌握Scala基础的语法 4、掌握Scala方法、函数的定义 5、掌握Scala的元组和数组定义
为什么学Scala:1、spark必备
2、 兼容Java
3、基于JVM
4、优雅
5、速度快
6、兼容Hadoop
1、编译器安装
2、开发工具安装
1、可变变量
Scala定义变量只需要两种方式,val 和 var
val:value
var:variable
1、条件表达式
scala> val a =1 a: Int = 1 scala> var b ="d" b: String = d scala> var b ='d' b: Char = d scala> a =2 scala> b = 'm' b: Char = m scala> val x= 1 x: Int = 1 scala> if(x>0) 1 else 2 res0: Int = 1 scala> if(x>0) 1 else "error" res1: Any = 1
2、块表达式
代码块:{code}
第六节、Scala的元组和数组
1、数组的定义
1.1定义定长数组
scala> val arr = Array(1,2,3,4,5,6) arr: Array[Int] = Array(1, 2, 3, 4, 5, 6) scala> val arr1 = new Array[Int](10) arr1: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) scala> println(arr1) [I@332f25c8 scala> println(arr1.toBuffer) ArrayBuffer(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) scala> println(arr.toBuffer) ArrayBuffer(1, 2, 3, 4, 5, 6) scala> println(arr) [I@2650f79
1.2.定义不定长数组
关键的操作:+=、++=
++=是数组对数组的增值操作
+=是对单个数据的操作
scala> import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer scala> val arr2 = ArrayBuffer[Int]() arr2: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer() scala> arr2 += 1 res6: arr2.type = ArrayBuffer(1) scala> arr2 += (2,3,4) res7: arr2.type = ArrayBuffer(1, 2, 3, 4) scala> val arr = Array(7,8,9) arr: Array[Int] = Array(7, 8, 9) scala> arr2 ++= arr res8: arr2.type = ArrayBuffer(1, 2, 3, 4, 7, 8, 9) scala> arr2 ++= ArrayBuffer(11,12) res9: arr2.type = ArrayBuffer(1, 2, 3, 4, 7, 8, 9, 11, 12)
append追加
scala> arr2.append(21,22)
insert追加(0:下标,1,0是代表的要插入的数据)
scala>arr2.insert(0,1,0)
对数据的删除:-=
scala> arr2 -= 1 res15: arr2.type = ArrayBuffer(0, 1, 2, 3, 4, 7, 8, 9, 11, 12, 21, 22)
remove:第一个参数是指下标,第二个参数是下标往后的几个数据
scala> arr2.remove(2,2) scala> arr2 res17: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 4, 7, 8, 9, 11, 12, 21, 22)
数组的转换
scala> val res = for(i <- 0 to arr2.length-1;if(i%2==0)) yield 1*10 res: scala.collection.immutable.IndexedSeq[Int] = Vector(10, 10, 10, 10, 10) scala> val res = for(i <- 0 to arr2.length-1;if(i%2==0)) yield i*10 res: scala.collection.immutable.IndexedSeq[Int] = Vector(0, 20, 40, 60, 80) scala> val res = arr2.filter(_%2 ==0) res: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 4, 8, 12, 22) scala> val res = arr2.filter(_%2 ==0).map(_*10) res: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 40, 80, 120, 220)
数组的常用的一下算法
scala> arr2.sum res18: Int = 95 scala> println(res18) 95 scala> arr2.max res20: Int = 22 scala> arr2.min res21: Int = 0 scala> arr2.sorted res22: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 4, 7, 8, 9, 11, 12, 21, 22) scala> arr2.reverse res23: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 21, 12, 11, 9, 8, 7, 4, 1, 0) scala> arr2.sortWith(_<_) res24: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0, 1, 4, 7, 8, 9, 11, 12, 21, 22) scala> arr2.sortWith(_>_) res25: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 21, 12, 11, 9, 8, 7, 4, 1, 0)
2、元组的定义
重要点
scala> val tuple = ("hadoop",3.1415,45,'char')拉链操作
scala> val arr1 = Array("x","y","z")
arr1: Array[String] = Array(x, y, z)
scala> val arr2 = Array(1,2,3)
arr2: Array[Int] = Array(1, 2, 3)
scala> arr1.zip(arr2)
res32: Array[(String, Int)] = Array((x,1), (y,2), (z,3))
scala> arr1 zip arr2
res33: Array[(String, Int)] = Array((x,1), (y,2), (z,3))
scala> val arr3 = Array(1,2,3,4,5)
arr3: Array[Int] = Array(1, 2, 3, 4, 5)
scala> arr1 zip arr3
res34: Array[(String, Int)] = Array((x,1), (y,2), (z,3))Scala中的循环
while for foreach
scala> for (i <- 1 to 10) println(i) 1 2 3 4 5 6 7 8 9 10 scala> for (i <- 1 until 10) println(i) 1 2 3 4 5 6 7 8 9
until:直到,效果是包左不包右,包前不包后
scala> val arr = Array("Tom","Jery","Derek")
arr: Array[String] = Array(Tom, Jery, Derek)
scala> for(i <- arr) println(i)
Tom
Jery
Derek
scala> for(i <- 0 to arr.length)println(i)
0
1
2
3
scala> for(i <- 0 to arr.length)println(arr(i))
Tom
Jery
Derek
scala> for(i <- 0 until arr.length)println(arr(i))
Tom
Jery
Derek嵌套for循环,需要用分号对其隔开
scala> for(i <- 1 to 10;j <- 1 to 10 if(i!=j))println(i*10+j) 12 13 14 15 16 17 18 19 20 21
yield关键字 后期(private)
scala> val x = for(i <- 1 to 10) yield i x: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> arr.map(println(_)) 1 2 3 4 5 6 7 res43: Array[Unit] = Array((), (), (), (), (), (), ()) scala> arr.map(_*10) res44: Array[Int] = Array(10, 20, 30, 40, 50, 60, 70)
foreach
scala> arr.foreach(println) 1 2 3 4 5 6
Scala中函数是非常重要的应用
1、方法的定义
def:关键字 m1:方法名儿 (x:Int,y:Int):x,y分别是参数,Int是参数类型 Int:返回值类型
=之后的是方法体,同时,有等号的话,会自动推断出返回值类型
scala> def m1(x:Int,y:Int): Int = {x*y}
m1: (x: Int, y: Int)Int
scala> def m2(x:Int){x*y}
m2: (x: Int)Unit
scala> def m2(x:Int,y:Int){x*y}
m2: (x: Int, y: Int)Unit
scala> m2(2,3)
scala> print(m2(2,3))
()
scala> (2,3)
res49: (Int, Int) = (2,3)
scala> println(res49)
(2,3)
scala> def m2(x:Int,y:Int){x*y; println(m2(2,3))}
m2: (x: Int, y: Int)Unit
^
scala> def m2(x:Int,y:Int) = {x*y}
m2: (x: Int, y: Int)Int
scala> m2(2,3)
res51: Int = 62、函数的定义
头等公民
scala> val func1 =(x:Int,y:Int) => x*y func1: (Int, Int) => Int =
无参函数
scala> val func2 = () => 6 func2: () => Int =
匿名函数,多用于:只用一次或者更少的时候,采用定义匿名函数
scala> (x:Int,y:Int) => x+y res52: (Int, Int) => Int =
比较难记的定义函数的形式
scala> val func3:Int => Int ={x => x*x}
func3: Int => Int =3、方法和函数的区别
方法是一定有 “=”
函数是一定有 “=>”
方法转函数:
scala> def m1(x:Int): Int =(x*x) m1: (x: Int)Int scala> arr.map(m1 _) res55: Array[Int] = Array(1, 4, 9, 16, 25) scala> arr.map(m1) res2: Array[Int] = Array(1, 4, 9, 16, 25, 36)
调用函数
scala> val f1 = (x:Int) => x*x f1: Int => Int =
_的使用:1,代表了所有的元素
2、可以把方法转函数
3、导包
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号