Scala学习笔记之基础函数

Scala是一门既面向对象,又面向过程的语言。因此在Scala中有非常好的面向对象的特性,可以 使用Scala来基于面向对象的思想开发大型复杂的系统和工程;而且Scala也面向过程,因此Scala 中有函数的概念。在Scala中,函数与类、对象等一样,都是一等公民。Scala中的函数可以独立 存在,不需要依赖任何类和对象。


Scala的函数式编程,就是Scala面向过程的最好的佐证。也正是因为函数式编程,才让Scala具 备了Java所不具备的更强大的功能和特性。


函数定义

Scala学习笔记之基础函数

1.一些简单的函数写法

我们创建一个object

Scala学习笔记之基础函数

写一个简单的函数示例

Scala学习笔记之基础函数

写一个无参函数,调用的时候可以写或者不写括号

Scala学习笔记之基础函数

但是如果定义的时候,就没有括号的话

Scala学习笔记之基础函数

那么调用f2的时候就要注意括号

Scala学习笔记之基础函数

如果返回值为空可以省略

Scala学习笔记之基础函数

2.局部函数

函数中是可以再定义函数的,比如上面的f1、f2、f3都是在main中的,我们可以再写一个。这也称为局部函数

Scala学习笔记之基础函数

其中f41不能在f4外面调用,存在作用域

Scala学习笔记之基础函数

在f4中就可以,注意作用域

Scala学习笔记之基础函数

3.默认参数函数

定义函数时,允许指定参数的缺省值,从而允许调用函数时不指明该参数,而是使用缺省值

示例

Scala学习笔记之基础函数

多个参数的情况

可以根据参数名赋值,如果不按照参数名会给第一个赋值

Scala学习笔记之基础函数

4.变长参数

定义函数时,允许指定最后一个参数可以重复,从而允许函数调用者使用变长参数列表来调用该函数

示例

Scala学习笔记之基础函数

可以有多个参数

Scala学习笔记之基础函数

在函数内部,变长参数的类型实际是一数组,比如上面的String*,类型实际为Array[String],然而如今你试图直接传入一个数组类型的参数,编译器会报错

Scala学习笔记之基础函数

为了避免这种情况,可以通过变量后面添加_*来解决,这就告诉编译器在传递参数的时候,逐个传入数组的元素,而不是数组整体

Scala学习笔记之基础函数

5. 函数赋值给变量

Scala中的函数可以独立定义,而且可以直接将函数作为值赋值给变量

语法规定,将函数赋值给变量时,必须在函数后面加上空格和下划线

示例

Scala学习笔记之基础函数

6. 匿名函数

Scala中,函数也可以不需要命名,此时函数被称为匿名函数

可以直接定义函数之后,将函数赋值给某个变量;也可将直接定义的匿名函数传入其他函数之中

Scala定义匿名函数的语法规则就是,(参数名: 参数类型) => 函数体

匿名函数的语法必须深刻理解和掌握,在spark的中有大量这样的语法,如果没有掌握,是看不懂spark源码的

Scala学习笔记之基础函数


分享到:


相關文章: