feat:线下课:函数质简原则

This commit is contained in:
2026-09-11 09:52:43 +08:00
parent 88187babd6
commit 24b6d26aa2
@@ -0,0 +1,96 @@
package chapter2.demo2
object DemoSimplify {
def main(args: Array[String]): Unit = {
// 标准的函数定义
def f0(name: String): String = {
return "hello " + name
}
// 先定义函数,再调用
val message = f0("f0")
println(message)
// 1. 函数有返回值的情况下,默认最后一个语句就是返回值,可以省略return关键字
def f1(name: String): String = {
"hello " + name
}
println(f1("f1"))
// 2. 整个函数体内部只有一行代码,此时可以省略大括号
def f2(name: String): String = "hello " + name
println(f2("f2"))
// 3. 如果返回值的类型是确定的,可以被推断出来的,那么函数的定义可以省略返回值类型
def f3(name: String) = "hello " + name
println(f3("f3"))
// 4. 如果函数显式的使用return返回返回值,那么此时不能省略函数的返回值类型。
// 省略了会报错,因为return是一个语句,这个语句的结果是Nothing,和return本身的值类型String不一致
// def f4(name: String) = {
// return "hello " + name
// }
// 5. 当我们显式定义返回值类型为Unit(空),那么就算使用return进行返回,函数的结果也会认为是Unit(空)
def f5(name: String): Unit = {
return "hello " + name
}
println(f5("f5")) // ()
// 6. 当返回值为空,即函数的返回值为 Unit 类型时,可以省略返回值类型和后面的等号
// 兼容其他语法的写法
def f6(name: String) {
println("hello " + name)
}
f6("f6")
// 7. 空参函数,在调用的时候,后面的括号可要可不要
def f7() {
println("hello f7")
}
f7()
f7
// 8. 空参函数,在定义的时候,也可以省略括号。此时,在调用的时候,后面的括号一定不能要
def f8 {
println("hello f8")
}
f8
// 调用会报错,需要和f8的定义保持一致(没有括号)
// f8()
// 9. 如果我们之关心函数的处理逻辑而不关心函数叫什么名字,那么此时可以省略函数名和 def关键字
def f9(name: String): Unit = {
println("hello " + name)
}
f9("f9")
// 匿名函数
val f9_1 = (name: String) => {
println("hello " + name)
}
// 匿名函数 (lambda)
val f9_2 = (name: String) => "hello " + name
f9_1("f9_1")
println(f9_2("f9_2"))
}
}