前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scala语言学习笔记一

Scala语言学习笔记一

作者头像
刀刀老高
发布2018-04-10 18:07:05
6880
发布2018-04-10 18:07:05
举报
文章被收录于专栏:奇点大数据奇点大数据

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

1 基础使用

1.1 Scala解释器安装

首先下载Scala解释器,下载地址:http://www.scala-lang.org/download/ 我这里是mac环境

安装后确保环境变量中可以直接访问到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)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奇点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档