【云计算】新手小白学习scala
小标 2019-02-25 来源 : 阅读 1199 评论 0

摘要:本文主要向大家介绍了【云计算】新手小白学习scala,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

本文主要向大家介绍了【云计算】新手小白学习scala,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

【云计算】新手小白学习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的种种


为什么学Scala:1、spark必备


2、 兼容Java


3、基于JVM


4、优雅


5、速度快


6、兼容Hadoop


第二节、搭建Scala开发环境


1、编译器安装


2、开发工具安装


第三节、测试环境:第一个Scala程序


第四节、变量定义


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的方法和函数


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 = 6


2、函数的定义


头等公民


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
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved