1.1 函数定义

  1. //有参 无返回值
  2. def testa:String,b:Int):Unit = {
  3. println("这是一个基本的函数语法 ")
  4. }

1.2 函数参数

可变参数一般放置在最后

  1. def test( s : String * ) : Unit = {
  2. println(s)
  3. }

参数默认值

  1. def test2( name: String , age :Int = 30 ): Unit = {
  2. println( s " $name, $age ")
  3. }
  4. //覆盖
  5. test2("zs",20)
  6. //age是默认值
  7. test2("ls")
  8. //带名参数
  9. test2(name="w5")

1.3 函数至简原则

  1. 1. return 如果是最后一行需要return可以省略
  1. def test() : String = {
  2. "test"
  3. }
  1. 2. 如果有return,则不能省略返回值类型,必须指定
  1. def test() : String = {
  2. return "test" //如果此时有return
  3. }
  1. 3. 只有一行代码,可以省略花括号
  1. def test = "123"
  1. 4. 返回值类型如果能推断出来,那么可以省略 : 类型

image.png

  1. 5. 如果返回值类型是Unit,那么可以省略等号
  1. def test(){
  2. println("test")
  3. }
  1. 6. 如果函数无参数,但是声明了参数列表,那么调用时,小括号,可加可不加
  1. def test() = {
  2. "123"
  3. }
  4. test
  1. 7. 如果函数没有参数列表,那么小括号可以省略,

调用时小括号必须省略

  1. def test = {
  2. "123"
  3. }
  4. //test() 报错
  5. test
  1. - 如果不关心名称,只关心逻辑处理,那么函数名可以省略

跟Java的匿名内部类类似。
image.png

Java中的使用

  1. Function<Integer, String> function = item -> item + "";