Scala
第五章学习目标
-
掌握方法的格式和用法
-
掌握凾数的格式和用法
-
掌握九九乘法表案例
1.方法
1.1概述
实际开发中,我們需要編写大量的代码,这就勢必会渉及到重夏的需求.例如:求10和20的最大値,求11和22的最大値,像祥的需求,用来迸行比較的還輯代碕需要編写兩次,而如果把比較的還緝代碣放到方法中,只需要編写一次就可以了,文就是方法. scala中的方法和Java方法炎似,但scala与ava定乂方法的語法是不- -祥的。
1.2珸法格式
def 方法名(参数名:参数类型,参数名:参数类型) : [return type] = {
//方法体
}
1.3示例
需求
- 定义一个方法getMax,用来获取两个整型数字的最大值,并返回结果(最大值)
- 调用该方法获取最大值,并将结果打印到控制台上
参考代码
def getMax (a1: Int,a2: Int): Int{
return if(a1 > a2) a1 alse a2
}
def getMax (a1: Int,a2: Int) = if(a1 > a2) a1 alse a2
1.4返回值类型推断
scala定义方法可以省略返回值的数据类型,由scala自动推断返回值类型。这样方法定义后更加简洁。
注意: 定义递归方法,不能省略返回值类型
示例
定义递归方法,求5的阶乘.
步骤
1.定义方法factorial,用来计算某个数字的阶乘
2.调用方法,获取5的阶乘,并将结果打印到控制台上.
参考代码
//1.定义方法factorial, 用来计算某个数字的阶乘
def factorial(n:Int):Int = if(n == 1) 1 else n * factorial(n 一1)
//2.调用方法,获取5的阶乘.
va1 result = factorial(5)
//3.将结果打印到控制台上.
println("result: " + result)
1.5惰性方法
当记录方法返回值的变量被声明为lazy时,方法的执行将被推迟,直到我们首次使用该值时,方法才会执行,像这样
的方法,就叫:惰性方法.
注意:
使用场景:
1.打开数据库连接
2.提升某些特定模块的启动时间.
3.确保对象中的某些字段能优先初始化
2.函数
scala支持函数式编程,将来编写Spark/Flink程序会大量使用到函数,目前,我们先对函数做一个简单入门, 在后续
的学习过程中,我们会逐步重点讲解函数的用法.
2.1定义函数
语法
(参数名:参数类型,参数名:参数类型....) =>函数体I
2.2示例
需求:
1.定义一个计算两个整数和的函数
2.调用该函数
val getSum(a: Int, b:Int) => a+b
getSum
2.3方法和函数的区别
在Java中,方法和函数之间没有任何区别,只是叫法不同.但是在Scala中,函数和方法就有区别了,具体如下:
结论:在Scala中,函数是对象,而方法是属于对象的,所以可以理解为:方法归属于函数.
2.4方法转换为函数
有时候需要将方法转换为函数.例如:作为变量传递,就需要将方法转换为函数
格式
val变量名=方法名_
//格式为:方法名+空格+下划线
注意: 使用二即可将方法转换为函数
示例
1.定义一个方法用来计算两个整数和
2.将该方法转换为一个函数,并赋值给变量
参考代码
def add(a:Int ,b:Int) a+b
val getSum = add_
val sum = getSum(10,20)