spark学习笔记一:scala语言基础

这篇文章是《scala编程》的笔记。

Scala基于java,是一种函数式编程+过程式编程的混合语言。

可以使用解释器交互执行,也可以编译成jar包。

 

变量

Scala 有两种变量, val (引用不可变)和 var(引用可变)

变量的定义和赋值语句是:

val msg2: java.lang.String = "Helloagain, world!"

msg2是变量名,java.lang.String是变量类型,用冒号分隔,等号后边是变量值。

以上赋值语句可以简化为如下所示,因为在Scala程序里java.lang类型的简化名都可使用:

val msg3: String = "Hello yet again,world!"

由于scala有类型推断: type inference能力,Scala能自动理解你省略的类型的能力:

val msg = "Hello, world!"

scala的赋值语句不像java一样返回变量本身,而返回的是一个空值(Unit,类似于java中的void)

 

函数

函数定义

函数定义的语句是:

def max(x: Int, y: Int): Int = {

if (x > y) x

else y
}

def是函数定义关键字,max(x: Int,y: Int)是函数名和参数,可以看出,scala的变量和变量名的组合都是 变量名:变量类型。:int是返回值类型。函数定义中,最后一条语句的返回值作为函数的返回值,所以不需要return语句。

如果函数是递归的、或者使用了return,你就必须显式地定义函数结果类型。然而在max的例子里,你可以不用写结果类型,编译器也能够推断它,同样,如果函数仅由一个句子组成,你可以可选地不写大括号。这样,你就可以把max函数写成这样:

defmax2(x: Int, y: Int) = if (x > y) x else y

对于没有返回值的函数,返回值类型应该指定为:Unit(大写的U)。 Scala 的 Unit 类型比较接近 Java 的 void 类型,而且实际上 Java 里每一个返回 void 的方法都被映射为 Scala 里返回 Unit 的方法。

函数的定义可嵌套:

def fun1():Unit = {

         def fun2():Unit = {

}

fun2

}

fun2只在fun1中可见。

函数定义中的=不可少,如果没有=的话,scala会默认返回类型是Unit,这样,函数真正要返回的东西就被转换为Unit类型了。这样的函数被称名过程,如下所示:

def fun1(){printnl(this is a procedure)}

 

另一种定义一种函数的方式是函数文本: function literal,这是匿名函数的定义方式,如下所示:

arg=> println(arg)

=>左边的arg代表的是参数列表,如果有多个参数,就应该是(arg1,arg2)的形式,各个参数可以跟上类型,如arg:Int这样。=>右边代表的是函数体。函数文本一般用在需要传入函数作为参数的函数调用里。比如,foreach(下面会介绍),使用foreach的方法就是args.foreach(arg=> println(arg)),传入了一个函数文本,代表了对args(是个数组)每一个元素的处理方式。当然,既然要传入的是函数,也可以写成args.foreach(println),这其实是println_的简写方式。

 

函数注意事项

函数可以带有可变数量的参数,如:

scala>def echo(args: String*) =

for (arg <- args) println(arg)

args 的类型实际上是 Array[String],如果参数要传入给这个echo,应该这样echo(arr:_*)。

以前缀“unary_”开头的函数或方法,可以把操作数据放在操作符右边。如Float类的unary_-()函数,其对应的是一元操作符-,使用的时候可以是-2.0这样。

 

函数调用

调用函数的方式:

1.      func(arg1,arg2)

2.      调用某对象的某个只带一个参数的函数时,如obj.fuc(arg),可以写成这种形式:obj fuc arg,这在for语句里特别有用,可以for (i <- 0 to 2){}这样。

 

使用函数

函数的使用:

作为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值