至简原则细节
- return 可以省略,Scala 会使用函数体的最后一行代码作为返回值
- 如果函数体只有一行代码,可以省略花括号
- 返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略)
- 如果有 return,则不能省略返回值类型,必须指定
- 如果函数明确声明 unit,那么即使函数体中使用 return 关键字也不起作用
- Scala 如果期望是无返回值类型,可以省略等号
- 如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加
- 如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略
- 如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略
案例
//函数标准写法
def f(s: String): String = {
return s + " abc"
}
println(f("hello"))
//1. return可以省略, scala会使用函数体最后一行代码作为返回值
def f1(s: String): String = {
s + " f1"
}
println(f1("hello"))
//2. 如果只有一行, 可以省略括号
def f2(s: String): String = s + " f2"
println(f2("hello"))
//3. 返回值类型如果能推断出来, 那么可以省略 (: 和返回值一起省略)
def f3(s: String) = s + " f3"
println(f3("hello"))
//4. 如果有return, 则不能省略返回值类型, 必须指定
def f4(): String = {
return " f4"
}
println(f4())
//5.如果函数明确声明 unit,那么即使函数体中使用 return 关键字也不起作用
def f5(): Unit = {
return " f5"
}
println(f5())
//6. Scala 如果期望是无返回值类型,可以省略等号
// 将无返回值的函数称之为过程
def f6() {
" f6"
}
println(f6())
println("==============")
// 7. 如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加
def f7() = " f7"
println(f7())
println(f7)
println("==============")
//8. 如果函数没有参数列表,那么小括号可以省略,调用时小括号必须省略
def f8 = " f8"
println(f8)
println("==============")
//9. 如果不关心名称,只关心逻辑处理,那么函数名(def)可以省略
def f9 = (x: String) => {
println("f9")
}
//把函数当参数传进来
def f10(f: String => Unit) = {
f("")
}
f10(f9)
println("==============")
println(f10((x:String)=>{println("wusong")}))