Scala教程-1 变量与函数的定义

3 篇文章 0 订阅
2 篇文章 0 订阅

Scala作为面向对象和函数式编程语言,在大数据领域有着广发的应用和优势,本博客后续会推出一系列有关Scala的博文,旨在为进入大数据行业的朋友们提供一些参考与学习,此篇博讲述了该系列博客的第一章,变量与函数的定义,欢迎广大朋友们一起学习、批评与指正。

1. 变量与函数的定义

1.1 scala与java版本兼容性

scala 2.10.X兼容jdk6, jdk7,不兼容jdk8;
scala 2.11.X兼容jdk8

1.2 val定义不可变的变量

1.2.1 不显示指定变量的类型

scala>val name="robot"
name:String = robot

注意: val关键字类似于java中的final关键字;
​ Scala可以根据变量值的类型来推断变量的类型。

1.2.2 显示指定变量的类型

val name:String=”robot” 
name:String = robot

注意: 显示指定变量的类型,后面对变量的赋值只能是指定变量类型或其子类型;

​ 对val修饰的变量不能进行修改,如果修改就会报错;

​ 一般推荐使用val,因为val变量占用更少的内存。

1.2.3 同时对多个变量赋值

scala> val name1,name2,name3="spark"
name1: String = spark
name2: String = spark
name3: String = spark

1.3 var定义可变的变量

1.3.1 不显示指定变量的类型

scala> var address="changsha"
address: String = changsha

1.3.2 显示指定变量的类型

scala> var address:String="wuhan"
address: String = wuhan

注意: var修饰的变量的值是可以修改的

1.3.3 同时对多个变量赋值

scala> var (x,y)=(10,20)
x: Int = 10
y: Int = 20

1.4 函数定义

def functionName(parameterName:String ):String ={"my name is " + parameterName}

说明: def 类型关键字
functionName:函数名称
parameterName:形参名称
parameterName后面的String:形参类型
=前面的String:返回值类型
=:用来分隔函数声明和函数体;告诉编译器是否对函数的返回值进行类型推断,如果省去=,则认为函数没有返回值(实质返回值为Unit)。

scala> def myFunction()={"This is scala function"}
myFunction: ()String

scala> def myFunction(){"This is scala function"}
<console>:7: warning: a pure expression does nothing in statement position; you
may be omitting necessary parentheses
       def myFunction(){"This is scala function"}
                        ^
myFunction: ()Unit

1.5 main函数

Scala中的main函数需要存在于伴生类对象object中
注意:
(1) 函数体的最后一行的值就是整个函数的返回值;
(2) 类型的声明是位于变量或者函数或者类后面的;

1.6 函数的参数、返回值和调用

函数有参数时,参数类型必须声明;

返回值类型可以不声明,递归函数必须声明返回值类型;

在Scala中a.b(“xy”)形式的方法调用,可以写成:a b “xy”;

1.7 匿名函数

“参数列表 => 函数体” 定义一个匿名函数

scala> (s:String)=>s.length
res0: String => Int = <function1>

scala> ((s:String)=>s.length)("lubin")
res1: Int = 5

经过上面的定义后,该语句结束后匿名函数就消失了,为了能够持久的利用该函数,可以将它赋值给变量或作为参数传递给别的函数。

scala> val size=(s:String)=>s.length
size: String => Int = <function1>

scala> size("lubin")
res2: Int = 5

注意: 将函数赋值给变量,用变量来调用函数

scala> List("spark","hadoop","flink").map(size)
res3: List[Int] = List(5, 6, 5)

注意: 对于列表的每一项都使用同一函数文本

scala> List("spark","hadoop","flink").map((s:String)=>s.length)
res4: List[Int] = List(5, 6, 5)

注意: 对于列表的每一项都适用同一函数变量

1.8 可变参数的用法

scala> def variableParameter(s:String*)={s.foreach(x=>println(x))}
variableParameter: (s: String*)Unit

scala> variableParameter("lubin","spark","changsha","hadoop")
lubin
spark
changsha
hadoop

“`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值