Scala是一门既面向对象,又面向过程的语言。因此在Scala中有非常好的面向对象的特性,可以 使用Scala来基于面向对象的思想开发大型复杂的系统和工程;而且Scala也面向过程,因此Scala 中有函数的概念。在Scala中,函数与类、对象等一样,都是一等公民。Scala中的函数可以独立 存在,不需要依赖任何类和对象。
Scala的函数式编程,就是Scala面向过程的最好的佐证。也正是因为函数式编程,才让Scala具 备了Java所不具备的更强大的功能和特性。
函数定义
![Scala学习笔记之基础函数](http://p2.ttnews.xyz/loading.gif)
1.一些简单的函数写法
我们创建一个object
![Scala学习笔记之基础函数](http://p2.ttnews.xyz/loading.gif)
写一个简单的函数示例
写一个无参函数,调用的时候可以写或者不写括号
但是如果定义的时候,就没有括号的话
那么调用f2的时候就要注意括号
如果返回值为空可以省略
2.局部函数
函数中是可以再定义函数的,比如上面的f1、f2、f3都是在main中的,我们可以再写一个。这也称为局部函数
其中f41不能在f4外面调用,存在作用域
在f4中就可以,注意作用域
3.默认参数函数
定义函数时,允许指定参数的缺省值,从而允许调用函数时不指明该参数,而是使用缺省值
示例
多个参数的情况
可以根据参数名赋值,如果不按照参数名会给第一个赋值
4.变长参数
定义函数时,允许指定最后一个参数可以重复,从而允许函数调用者使用变长参数列表来调用该函数
示例
可以有多个参数
在函数内部,变长参数的类型实际是一数组,比如上面的String*,类型实际为Array[String],然而如今你试图直接传入一个数组类型的参数,编译器会报错
为了避免这种情况,可以通过变量后面添加_*来解决,这就告诉编译器在传递参数的时候,逐个传入数组的元素,而不是数组整体
5. 函数赋值给变量
Scala中的函数可以独立定义,而且可以直接将函数作为值赋值给变量
语法规定,将函数赋值给变量时,必须在函数后面加上空格和下划线
示例
6. 匿名函数
Scala中,函数也可以不需要命名,此时函数被称为匿名函数
可以直接定义函数之后,将函数赋值给某个变量;也可将直接定义的匿名函数传入其他函数之中
Scala定义匿名函数的语法规则就是,(参数名: 参数类型) => 函数体
匿名函数的语法必须深刻理解和掌握,在spark的中有大量这样的语法,如果没有掌握,是看不懂spark源码的
閱讀更多 分享電腦學習 的文章