Scala语言学习笔记一

Posted 奇点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala语言学习笔记一相关的知识,希望对你有一定的参考价值。

Scala是一门小众的语言,但是作者因为工作原因要以Spark作为工作中的一个重心,而Spark采用了Scala语言编写,于是萌生了认真学习Scala的念头,在学习Scala中产生了这篇Scala学习笔记,但是Scala发展之快远远超过了作者的想象。也是和Spark的迅速普及离不开关系,因此作者重新整理了Scala学习笔记,加入了Scala新的特性,希望能够对大家有所帮助,因为时间有限,能力有限,有描述不准确的地方欢迎各位指正。


1 基础使用

1.1 Scala解释器安装

安装后确保环境变量中可以直接访问到scala ,验证方法是直接执行

$ scala

如果进入scala交互界面则配置正确,否则检查$PATH变量,如果采用了brew安装,可以用

$ brew install scala 

来进行安装,我这里采用的版本是Scala-2.11.x版本


1.2 常量使用

scala>  2 * 3 + 4

res0: Int = 10

计算结果会被保存到 res0 当中,可以继续使用res0来进行运算

scala> 0.5 * res0

res1: Double = 5.0

类型支持自动转换,如果手工调用方法可以使用Tab键,这也是scala交互式学习的优势

scala> res1.to[Tab]

Scala的解释过程实际上是把代码转换成字节码,然后由Java虚拟机执行。一般被称作“REPL”


1.3 常量、变量声明

scala> val number = 0

声明之后 number 的值不可改变,一般会用一些有意义的名称来代替 res值来使用

scala> var counter = 1

scala> var counter = 2

使用var可以声明变量

无论常量和变量都可以指定类型

val hello: String = null

val world: Any = “Hello"


1.4 常用类型

Scala支持其中数值类型: Byte、Char、Short、Int、Long、Float、Double ,和Java一样,还支持Boolean


1.5 函数调用方法

函数通过import导入,例如导入数学函数

scala> import scala,math._ //_是Scala的通配符,类似Java的*


1.6 函数参考

http://www.scala-lang.org/api/2.11.8/#package


2 控制结构和函数

2.1 if条件表达式

Scala的if表达式和Java类似,但是Scala的if/else表达式可以跟着值,也可以赋值给变量

scala> val number =  if( x > 0 )  1 else -1


2.2 输入输出

Scala输出可以使用 print() println() printf() , println和print的区别就是会在打印之后增加一个换行符

printf类似C风格。

scala>  printf("Hello , %s !\n", "wilson")

输入使用readLine ,可以带一个参数作为提示符

scala> val name = readLine(“Input  your name: ”)


2.3 循环

Scala的for循环比较特殊没有c的(i=0;i<10;i++)的方式,但是Scala 有特殊的for 写法

for ( i <- 表达式 )

scala > for ( i <- 1 to 10 )

          | j = j + i


还有更高级的写法

scala > for ( i <- 1 to 3; j <- 1 to 3 ) print (( 10 * i + j ) + " " )

   // 11 12 13 21 22  23 31 32 33

还可以生成推导式

scala > for ( i <- 1 to 10 ) yield i % 3

   //集合 Vector(1, 2, 0, 1, 2, 0, 1, 2, 0, 1)


Scala 还支持while 和 do循环,写法如下:

scala > while ( n > 1 )

         |   n -= 1


2.4 函数

Scala 除了方法之外还可以支持函数,方法和函数的区别在于,方法可以对对象进行操作,函数不是。java里只能用静态方法来进行模拟。

函数定义举例:def  abs(x: Double) = if ( x >=0 )  x  else -x

特别注意的是递归函数,必须要指定返回类型,否则编译器无法校验

   def fac(n: Int): Int = if ( n <= 0 ) 1 else n * fac(n - 1)


关注大数据尖端技术发展,关注奇点大数据



以上是关于Scala语言学习笔记一的主要内容,如果未能解决你的问题,请参考以下文章

Scala学习笔记一

Spark基础学习笔记08:Scala简介与安装

Spark基础学习笔记10:Scala集成开发环境

大数据处理学习笔记1.1 搭建Scala开发环境

Spark基础学习笔记11:Scala运算符

Scala学习笔记一之基础语法,条件控制,循环控制,函数,数组,集合