scala方法

Scala

第五章学习目标

  1. 掌握方法的格式和用法

  2. 掌握凾数的格式和用法

  3. 掌握九九乘法表案例

1.方法

1.1概述

实际开发中,我們需要編写大量的代码,这就勢必会渉及到重夏的需求.例如:求10和20的最大値,求11和22的最大値,像祥的需求,用来迸行比較的還輯代碕需要編写兩次,而如果把比較的還緝代碣放到方法中,只需要編写一次就可以了,文就是方法. scala中的方法和Java方法炎似,但scala与ava定乂方法的語法是不- -祥的。

1.2珸法格式
def 方法名(参数名:参数类型,参数名:参数类型) : [return type] = { 
//方法体
}

注意:

  • 参数列表的参数类型不能省略
  • 返回值类型可以省略,由scala自动推断
  • 返回值可以不写return,默认就是{}块表达式的值
1.3示例

需求

  1. 定义一个方法getMax,用来获取两个整型数字的最大值,并返回结果(最大值)
  2. 调用该方法获取最大值,并将结果打印到控制台上

参考代码

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,用来计算某个数字的阶乘

规律: 1的阶乘等于1,其他数字的阶乘为:n!=n*(n- 1)!

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. Java中并没有提供原生态的"惰性’ '技术,但是可以通过特定的代码结构实现,这种结构被称之为:懒加载(也
    叫延迟加载)
  1. lazy不能修饰var类型的变量.

使用场景:
1.打开数据库连接

由于表达式执行代价昂贵,因此我们希望能推迟该操作,直到我们确实需要表达式结果值时才执行它

2.提升某些特定模块的启动时间.

为了缩短模块的启动时间,可以将当前不需要的某些工作推迟执行

3.确保对象中的某些字段能优先初始化

为了确保对象中的某些字段能优先初始化,我们需要对其他字段进行情性化处理

2.函数

scala支持函数式编程,将来编写Spark/Flink程序会大量使用到函数,目前,我们先对函数做一个简单入门, 在后续
的学习过程中,我们会逐步重点讲解函数的用法.

2.1定义函数

语法

(参数名:参数类型,参数名:参数类型....) =>函数体I

注意:
●在Scala中,函数是一个对象(变量)
●类似于方法,函数也有参数列表和返回值
●函数定义不需要使用def义
●无需指定返回值类型

2.2示例

需求:
1.定义一个计算两个整数和的函数
2.调用该函数

val getSum(a: Int, b:Int) => a+b
getSum
2.3方法和函数的区别

在Java中,方法和函数之间没有任何区别,只是叫法不同.但是在Scala中,函数和方法就有区别了,具体如下:

●方法是隶属于类或者对象的,在运行时,它是加载到JVM的方法区中
●可以将函数对象赋值给一一个变量, 在运行时,它是加载到VM的堆内存中
●函数是一个对象,继承自FunctionN, 函数对象有apply, curried, toString, tupled这些方法。 方法则没有

结论:在Scala中,函数是对象,而方法是属于对象的,所以可以理解为:方法归属于函数.

2.4方法转换为函数

有时候需要将方法转换为函数.例如:作为变量传递,就需要将方法转换为函数
格式

val变量名=方法名_
//格式为:方法名+空格+下划线

注意: 使用二即可将方法转换为函数
示例
1.定义一个方法用来计算两个整数和
2.将该方法转换为一个函数,并赋值给变量
参考代码

def add(a:Int ,b:Int) a+b
val getSum = add_

val sum = getSum(10,20)

案例:99乘法表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AodBJR1a-1648276383892)(/Users/kayleigh/Library/Application Support/typora-user-images/image-20220326142934025.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创作者mateo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值