开发者学堂课程【Scala 核心编程-基础:函数基本介绍和快速入门】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8929
函数基本介绍和快速入门
一、函数基本语法
二、快速入门案例
一、函数基本语法
这节课进行讲解 Scala 函数的基本定义语法,在上面已经提出了需求,对语言函数的基本语法下面总结了八句话:
基本语法:
def 函数名([参数名:参数类型], [:返回值类型] =]{
语句....
return 返回值
}
de f是关键字,然后是函数名后面跟的参数名和参数类型,形参可以是多个,注意函数返回值是有冒号和返回值类型的,而用中括号括起来的可以写,也可以不写,然后函数中式语句 return 返回值。
1)函数声明关键字为 def (definition)
2) [参数名:参数类型...表示函数的输入(就是参数列表),可以没有。如果有,多个参数使用逗号间隔
3)函数中的语句:表示为了实现某一功能代码块
4)函数可以有返回值,也可以没有
5)返回值形式1: :返回值类型=,就是有一个返回值具体类型是什么。
6)返回值形式2: 就是把[:返回值类型]拿掉只写一个返回值,表示返回值类型不确定,使用类型推导完成。
7)返回值形式3:就是把[:返回值类型] =]全部拿掉表示没有返回值,return 不生效,冒号与返回值是一个整体,与返回值类型一起出现。
8)如果没有 return,默认以执行到最后一行的结果作为返回值。
下面开始快速的对上面提出的问题进行解决。
二、快速入门案例
下面进行完成这样一个需求:
输入两个数,再输入一个运算符(+,-),得到结果:
代码实现
新建包 com.atguigu.temp,fun,再新建一个案例 FunDemo01文件,如下首先定义一个函数,当这里没有去使用的话也是一个方法,就是当没有用的时候函数和方法是可以等同的,根据使用的形式去决定怎么称呼。
因为这里要求的是结果,所以使用函数 getRes,然后传入两个参数 n1,n2,有一个操作符写为 char,而返回值类型肯定是有一个结果的,所以目前采用返回值形式1,返回值类型为 int 类型加上 int 类型,还是为 int。函数写完后进行判断,如果 oper 等于+,则进行 n1+n2的计算,这里的 return 可以写,也可以不写,不写的话,默认就是这个结果。如果 oper 等于-的话,就进行 n1-n2,此时会出现报错,因为如果 oper 不等于加号或者减号,则没有返回值。所以要再加一个逻辑,如果 oper 传入的不是加号或者减号就代表传入有问题,就返回 null,然后定义变量 n1=10,n2=20,然后输出进行调用的结果。此时执行的话会出现报错,原因是返回值为空不能与 int 数据类型进行匹配,而上面讲过这种写法,要求返回值类型必须都是 int,而这种写法只是返回值形式的其中一种,所以这里可以使用返回值类型2,只写一个等号。所以为了不报错可以直接把:int 拿掉,只写一个等号。下面运行代码进行查看:
package com. atguigu. chaptero5. fun
object FunDemo01 {
def main(args: Array[string]): Unit ={
valn1=10
valn2=20
println("res=”+ getRes(1, 2, '-'))
}
//定义函数/方法
def getRes(n1: Int, n2: Int, oper:
c
har) = {
if (oper == '+') {
n1 + n2 //返回
} else if (oper == '-') {
n1-n2
} else {
//返回null
nu
ll
}
运行结果:
D: \program\jdk8\bin \java
res=- 1
甚至输入一个错误的运算符也能正常返回一个 null 值,如:
valn1=10
valn2=20
println("res=”+ getRes(1, 2, ')'))
…
运行结果:
D: \program\jdk8\bin \java
res=null
所以这里只需要进行类型推导就可以判断返回值。到此就把基本语法学习完了,后面就是讲解该技术的使用细节和陷阱讲解。以上进行讲解了函数的必要性和进行讲解函数定义基本的语法和快速入门,因为没有函数代码冗余,不利于代码的维护,所以提出了把功能放在一起进行管理,函数最早出现的原因也是如此,