在 Kotlin 中使用函数类型和 lambda 表达式

发布于:2025-08-09 ⋅ 阅读:(19) ⋅ 点赞:(0)

参考官方文档:

https://developer.android.google.cn/codelabs/basic-android-kotlin-compose-function-types-and-lambda?hl=zh-cn#0

1、 将函数存储在变量中

  • 作为一种一级结构,函数也属于数据类型,因此,可以将函数存储在变量中、将函数传递到函数,以及从函数返回函数。
  • 如需将函数作为值引用,您需要使用函数引用运算符 ::
	fun main() {
   
   
	    val trickFunction = ::trick
	}
	
	fun trick() {
   
   
	    println("No treats!")
	}

2、使用 lambda 表达式定义函数

  • lambda 表达式提供了简洁的语法来定义函数,无需使用 fun 关键字。您可以直接将 lambda 表达式存储在变量中,无需对其他函数进行函数引用。语法图如下:
    在这里插入图片描述

  • 使用 lambda 表达式定义函数时,有一个引用该函数的变量。还可以像对待任何其他类型一样,将其值分配给其他变量,并使用新变量的名称调用该函数。

	fun main() {
   
   
	    val trickFunction = trick
		// 调用方式
		trick()
		trickFunction()
	}
	val trick = {
   
   
	    println("No treats!")
	}
  • 在 main() 函数中,移除函数引用运算符 ::,因为 trick 现在引用的是变量,而不是函数名称。
  • 在 main() 函数中,调用 trick() 函数,但这次要包含圆括号,就像您在调用任何其他函数时所做的那样。
  • 同理,将 trickFunction 变量视为函数进行调用。
  • 借助 lambda 表达式,您可以创建用于存储函数的变量,像调用函数一样调用这些变量,并将其存储在其他可以像函数一样调用的变量中。

3、将函数用作数据类型

  • 函数类型由一组圆括号组成,其中包含可选的参数列表、-> 符号和返回值类型。语法如下图所示:
    在这里插入图片描述
	val treat: () -> Unit = {
   
   
	    println("Have a treat!")
	}
  • treat 变量的数据类型为 () -> Unit,圆括号为空,因为函数没有任何参数;返回值类型为 Unit,因为函数不返回任何内容。如果您的参数接受两个 Int 参数并返回 Int,则其数据类型为 (Int, Int) -> Int。

4、将函数用作返回值类型

  • 函数是一种数据类型,因此您可以像使用任何其他数据类型一样使用函数。您甚至可以从其他函数返回函数。语法如下图所示:
    在这里插入图片描述
	fun trickOrTreat(isTrick: Boolean): () -> Unit {
   
   
	    if (isTrick) 

网站公告

今日签到

点亮在社区的每一天
去签到