Spark基础学习笔记13:Scala函数

本文详细介绍了Scala中的函数声明,包括显式声明和隐式声明,并通过实例展示了函数的使用,如加法函数、阶乘函数等。此外,还探讨了函数的类型,如成员方法、局部函数、匿名函数和高阶函数。文中还讲解了占位符的使用、闭包的概念及可变参数和尾递归的原理,旨在帮助读者深入理解Scala中的函数编程。
摘要由CSDN通过智能技术生成

零、本讲学习目标
掌握如何声明函数
了解各种类型的函数
掌握占位符的使用
理解闭包的现象
掌握可变参数
理解尾递归
一、声明函数
函数其实是一段具有特定功能的代码的集合,由函数修饰符、函数名、函数参数列表、函数返回值声明与函数体组成。
(一)显式声明函数
1、声明格式
[public | private | protected] def 函数名(参数列表) : 返回值声明 = {函数体}

2、注意事项
函数通过def关键字定义
def前面可以具有修饰符,可以通过private、protected来控制其访问权限。注意默认访问权限是public
还可使用override、final等关键字修饰
函数体中return关键字往往可以省略掉,一旦省略掉,函数将会返回整个函数体中最后一行表达式的值,这也要求整个函数体的最后一行必须是正确类型的值的表达式
scala一般都可以自动推断出返回值类型,所以通常返回值类型声明可以省略,但是注意,如果因为省略了返回值类型造成歧义,则一定要写上返回值声明
如果函数体只有一行内容,则包裹函数体的大括号可以省略
如果返回值类型是Unit,则另一种写法是可以去掉返回值类型和等号,把方法体写在花括号内,而这时方法内无论返回什么,返回值都是Unit
3、案例演示
(1)加法函数
创建net.hw.func包,在包里创建Example01对象
在这里插入图片描述
package net.hw.func

import scala.io.StdIn

/**

  • 功能:显式声明函数
  • 作者:华卫
  • 日期:2022年03月06日
    */
    object Example01 {
    def add1(a: Int, b: Int): Int = {
    return a + b
    }

def add2(a: Int, b: Int): Int = {
a + b
}

def add3(a: Int, b: Int) = {
a + b
}

def add4(a: Int, b: Int) = a + b

def add5(a: Int, b: Int) {
println(a + " + " + b + " = " + (a + b))
}

def main(args: Array[String]): Unit = {
print("a = ")
val a = StdIn.readLine().toInt
print("b = ")
val b = StdIn.readLine().toInt

println(a + " + " + b + " = " + add1(a, b))
println(a + " + " + b + " = " + add2(a, b))
println(a + " + " + b + " = " + add3(a, b))
println(a + " + " + b + " = " + add4(a, b))
add5(a, b)

}
}

运行程序,查看结果
在这里插入图片描述

(2)阶乘函数
显式声明阶乘函数并调用
在这里插入图片描述

(二)隐式声明函数
1、声明格式
(参数列表) => {函数体}

2、注意事项
如果函数体只有一行,那么大括号可以省略
如果参数类型可以推测得知,那么参数列表中类型声明可以省略
如果函数参数列表中只有一个参数,在不会产生歧义的情况下,小括号可以省略
3、案例演示
(1)加法函数
在net.hw.func包里创建Example02对象
在这里插入图片描述

package net.hw.func

import scala.io.StdIn

/**

  • 功能:隐式声明函数
  • 作者:华卫
  • 日期:2022年03月06日
    */
    object Example02 {
    val add1 = (a: Int, b: Int) => {a + b}
    val add2 = (a: Int, b: Int) => a + b
    val add3 = (n: Int) => n + 1

def main(args: Array[String]): Unit = {
print("a = ")
val a = StdIn.readLine().toInt
print("b = ")
val b = StdIn.readLine().toInt

println(a + " + " + b + " = " + add1(a, b))
println(a + " + " + b + " = " + add2(a, b))
println(a + " + " + 1 + " = " + add3(a))

}
}

val add1 = (a: Int,<
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值