scala教程:函数至简原则

声明函数 省略原则

下面3个是一脉相承:

  1. return 可以省略,使用函数体的 最后一行代码 作为返回值

  2. 如果函数体 只有一行代码,可以省略 花括号,即:{}

  3. 返回值类型如果能够推断出来,那么可以省略 :返回类型(要保留 =),同时 return 也不能写

正常完整写法

def main(args: Array[String]): Unit = {

  def f(s: String): String = {
    return "测试"+s
  }
  println(f("Hello"))
}

原则 1

def f1(s: String): String = {
  "测试"+s
}
println(f1("Hello"))

原则 2

def f2(s: String): String = "测试"+s

原则 3

def f3(s: String) = "测试"+s

println(f3("Hello3"))

下面写法报错,不能有 return :

def f3(s: String) = return "测试"+s

注意:return

如果有 return,则 必须 有返回值类型

正常写法

def f4(): String = {
  return "测试"
}

println(f4())

下面写法报错

不能写成下面方式,有 return 关键字,必须指定返回类型

def f4() = {
  return "测试"
}

没有返回值

如果函数 无返回值,可以省略 :Unit =(省略 =),但 不能省略花括号

def f4(s:String) {
  println("测试打印:"+s)
}

println(f4("scala从入门到精通"))

返回值是 ()

调用函数 省略原则

  1. 如果函数 无参,那么调用时,小括号可以省略

  2. 如果定义函数时 没有小括号,调用函数时 必须不能有小括号

原则 1

def f6(): String = {
  return "测试f6"
}

println(f6()) //可以加小括号
println(f6) //可以不加小括号

原则 2

scala中的应用:数组 Array 定义 length 方法就没有 ()

def f7: String = {
  return "测试f7"
}

//  println(f7()) //报错
println(f7)

原文出处:/show_1IX1BC3npQmT.html