feat:线下课:函数质简原则
This commit is contained in:
@@ -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"))
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user