scala语言-学习日记(一)

Scala语言是一个较为抽象的语言,因为这门语言结合了面向对象的编程思想和面向函数的一门语言;

函数式编程功能强大,用起来倍爽,所以一定熟练掌握;

Scala是一种针对JVM 将面向函数和面向对象技术组合在一起的编程语言。Scala编程语言近来抓住了很多开发者的眼球。它看起来像是一种纯粹的面向对象编程语言,而又无缝地结合了命令式和函数式的编程风格。Scala融汇了许多前所未有的特性,让开发者能够很好的而同时又运行于JVM之上。随着大数据的日益发展,scala必定会成为必不可少的开发语言。

为什么要学习scala?

1、代码规范而且好看:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。

2、速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多。

3、能融合到Hadoop生态圈

4.因为我们要学习的spark和kafka等它的底层语言是scala写的,学习scala能够有助于我们编写spark代码及阅读源码。

Scala的安装

首先安装jdk,推荐1.8版本

下载scala-2.10.6.msi文件解压安装即可

注:环境变量会自动进行安装

Scala基础学习

学习任何一门语言,都有着相同的路数。所以对于现在的我们而言。Scala的学习相对来说会容易一些。

Scala的数据类型

定义变量

val name=”max”

注意:scala有个原则就是极简原则,不用写的东西一概不写。

定义变量有两种形式

一种是像上面那样用val修饰另一种是var进行修饰

val 定义的变量不可变相当与java中的final

用表达式进行赋值

Val x=1

Val y=if(x>0) 1 else -1

混和表达式

Val 1 =if (x>0) 1 else “jay”

需要注意的是any是所有的父类,相当于java里的object

else缺失的表达式

val p=if (x>5) 1

注意:Unit相当于java中的void

if 语句定义变量加深学习

请编写一个用if, else if, else赋值的例子

Val x=0

Val z={

}

For 循环

For循环区间:

 

Val res=1 to 10

for(i<-res){

println(i)

}

 

for 循环数组

 

val arr=Array(“a”,”b”,”c”)

for(i<-arr)

println(i)

 

高级for循环

 

for (i<- 1 to 4;j<- 1 to 4 if i!=j)

println(10*i+j+” ”)

使用for循环生成一个数组

Val z=for (i<-1 to 3) yield i*10

 

加深练习

需求说明:定义一个数组val a1=Array(1,2,3,4,5,6,7,8,9)把其中的偶数取出。

懒加载

Val lazyVal={println(“I am too lazy”);1}

lazy val lazyVal={println(“I am too lazy”);1}

方法与函数

定义一个方法:

def method(a:Int,b:Int):Int=a*b

method(3,5)

定义一个函数:

Val f1=(x:Int,y:Int)=>x+y

f1 (1,2)

匿名函数

(x:Int,y:Int)=>x+y

匿名函数举例

方法和函数的区别

在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作,函数可以在方法中传递。

 

def m1(f(Int,Int)=>Int)={f(2,3)}

val f1=(x:Int,y:Int)=>x+y

val f1=(x:Int,y:Int)=>x+y

val a=m1(f1)

val b=m1(f2)

 

通过方法转变为函数

集合

List

不可变的list

 

可变的list

val lst0=ListBuffer[Int](1,2,3)

  val lst1=new ListBuffer[Int]

lst1+=4         lst1发生改变

  lst1+=5

val lst4=lst1:+6   lst1没有改变

Set

Map

Tuple

Val t=()

 

 

 

猜你喜欢

转载自blog.csdn.net/weixin_42702831/article/details/82315361