大家好,我是。
创作时间:2022 年 6 月 29 日
博客主页: ??点此进入博客主页
—— 新时代的农民工 ??
—— 换一种思维逻辑去看待这个世界 ??
今天是加入CSDN的第1215天。觉得有帮助麻烦??点赞、??评论、收藏
文章目录
一、概述
学习函数时编程之前我们先来了解一下目前比较流行的、不同的编程范式。
编程范式:
- 面向过程:将问题拆解为一步一步,按照步骤解决问题。
- 面向对象:分解对象、行为、属性,通过对象关系以及行为调用解决问题。耦合低,可维护性强。
- 函数式编程:解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的步骤,解决问题。
函数式编程语言中,所有值都是常量,都是一个值。Scala
中推荐大家能用常量就用常量(val
),符合函数式编程的基本思想。函数式编程中每段程序都会有一个返回值,(if - else
、for
),本质上就是一个映射关系,表达式进行求值,做函数的映射关系。
函数式编程不关心计算机底层的实现,对开发者更加友好。命令式编程对于计算机更加的友好,执行效率比较高,函数式编程对于开发者的效率更高,但是执行效率比较低。函数式编程无副作用,利于并行处理,所以Scala特别利于应用于大数据处理,比如Spark
,Kafka
。
二、函数基础
基本语法
如何定义一个函数?
def 函数名称 ( 参数名 : 参数类型 , ......) : 函数返回值类型 = {
函数体;
}
特点说明:
- 在Scala中,函数在代码块的任何地方都可以单独去声明出来。
- 定义在方法中(内层)的称为函数(狭义的函数),定义在类或对象中(最外层)的函数称为方法
- 默认使用最后一行代码作为返回值,
return
可省略 - 函数没有重载和重写的概念;方法可以进行重载和重写
举个栗子:
object Test01_Function {
def main(args: Array[String]): Unit = {
// 定义一个函数
def sayHi(name: String): Unit = {
println(name + ", sayHi!")
}
// 调用函数
sayHi("lisi")
// 调用方法 通过对象去调用
Test01_Function.sayHi("wangwu")
// 获取方法返回值
val result = Test01_Function.sayHello("zhaosan")
println(result)
}
// 定义对象的方法
def sayHi(name: String): Unit = {
println("Hi , "+name)
}
def sayHello(name: String): String = {
println("hello , "+name)
return "hello"
}
}
函数参数
- Scala中定义函数参数可以有默认值,指的是如果当前的函数声明时指定了默认值,调用的时候可以不传参数,此时该参数的值为默认值,默认参数必须全部放在末尾。
- 可变参数。参数列表中如果有多个参数,可变参数放在最后。
- 带名参数: