Scala函数至简原则

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)})
  • 简化1:参数类型可省略,根据形参自动推导
f1((x) => {
    
    println(x)})
  • 简化2:省略参数类型,如果参数只有一个,参数小括号可以省略
f1(x => {
    
    println(x)})
  • 简化3:如果函数体只有一句代码,大括号可以省略
f1(x => println(x))
  • 简化4:如果参数只在后面的函数体中出现过一次,那么可以用_代替
f1(println(_))
  • 简化5:如果println的时候,可以推断出是一个函数,那么_可以省略
f1(println)

猜你喜欢

转载自blog.csdn.net/FlatTiger/article/details/114373924