Scala函数的定义和类型

Scala函数的定义和类型

1、函数的介绍

面向对象编程,将对象传来传去
1、将对象作为参数
2、将对象作为返回值
需要明确对象的类型

面向函数编程,将函数传来传去(函数也算对象,万物皆对象)
1、可以将一个函数作为参数
2、可以将一个函数作为返回值
所以需要明确每一个函数的类型
scala中函数的定义
1、可以在object创建,通过对象名直接调用
2、可以类中创建,需要创建类的对象才能调用
3、可以在任何代码块中创建,可以直接在后面调用(使用{}括起来的代码被称为代码块)

函数的基本要素
1、函数名
2、函数的参数
3、函数的返回值类型
4、函数体

2、定义函数

在代码块中定义函数
package com.shujia.scala

object Demo14 {
  def main(args: Array[String]): Unit = {
    //在代码块中(main方法中),定义一个函数,作用域只在main方法中
    def fun1():Unit = {
      println("老李牛逼")
    }

    //调用fun1()函数,可以多次调用
    fun1()  //老李牛逼
    fun1()  //老李牛逼
  }
}
在类中定义函数

在类中定义函数,main方法中可以直接调取函数;

在main方法中定义函数,在类中无法直接调取

package com.shujia.scala

object Demo14 {

  //在类中定义一个函数
  def fun1():Unit = {
    println("老李牛逼")
  }

  def main(args: Array[String]): Unit = {
    //调用fun1()函数,可以多次调用
    fun1()  //老李牛逼
    fun1()  //老李牛逼
  }

}

3、函数的类型

函数类型的描述
1、函数的类型,与函数的参数、函数的返回值类型有关

2、函数类型的描述
    def add(i: Int): Int = {
        i + 1
    }
这是一个参数为Int类型、返回值为Int类型的函数

    def fun3(str: String): Unit = {
      println(str)
    }
这是一个参数为String类型、没有返回值的函数

3、函数类型的表示方式: Int => Int
函数的简写1
1、如果函数体只有一行,{}可以省略
2、如果最后一行作为返回值,return可以省略
3、如果没有参数,()可以省略
4、返回值类型可以省略,会自动推断

 def fun3(str: String): Unit = {
      println(str)
    }

简写:
	def fun3(str: String): Unit = println(str)
函数的简写2:lambda格式(匿名函数)
def fun2(str: String): Int = {
      str.toInt
    }
    
lambda格式:
	(str: String) => str.toInt
	
=> :左边是参数
=> :右边是函数体(返回值)

函数的引用:将函数赋值给一个常量/变量

val fun5: String => Int = (str: String) => str.toInt
等价于
val fun5: String => Int = fun2

println(fun5("888"))  //888
posted @ 2022-03-05 16:53  阿伟宝座  阅读(546)  评论(0)    收藏  举报