0.正常定义的函数
def f0(s: String): String = {
return s
}
1.return可以省略,Scala会使用函数体的最后一行代码作为返回值
def f1(s: String): String = {
s
}
2.如果函数体只有一行代码,可以省略花括号
def f2(s: String): String = s
3.返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)
def f3(s: String) = s
4.如果有return,则不能省略返回值类型,必须指定
def f4(s: String): String = return s
5.如果函数明确声明Unit,那么即使函数体中使用return关键字也不起作用
def f5(s: String): Unit = return s
println(f5("abc"))
6.Scala如果期望是无返回值类型,可以省略等号
def f6(s: String) {
println("hello")}
7.如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加
def f7() {
println("hello")}
f7()
f7
8.如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略
def f8 {
println("hello")}
f8
9.如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略(匿名函数)
- 定义匿名函数,参数名:(参数类型,…) => 返回值类型
def f1(fun: (String) => Unit): Unit = {
fun("hello")
}
- lambda表达式调用匿名函数 (参数名:参数类型,…) => {函数体}
f1((x:String) => {
println(x)})
f1((x) => {
println(x)})
- 简化2:省略参数类型,如果参数只有一个,参数小括号可以省略
f1(x => {
println(x)})
f1(x => println(x))
- 简化4:如果参数只在后面的函数体中出现过一次,那么可以用_代替
f1(println(_))
- 简化5:如果println的时候,可以推断出是一个函数,那么_可以省略
f1(println)