Lambda 编程(Kotlin)一

学习记录,以下为个人理解

知识点:

  • Lambda的定义:允许你把代码块当作参数传递给函数
  • Lambda的语法约定:如果lambda 表达式是函数调用的最后一个实参,它可以放到括号的外边
  • 当lambda表达式时函数唯一的实参时,还可以去掉调用代码中的空括号对

Lambda 简介

简单来说,就是直接传递代码块作为函数的参数。

举例(kotlin):

Kotlin 复制代码
button.setOnClickListener{ 要执行的代码块 }

上述内容就是直接将代码块作为函数的参数传递给了setOnClickListener。 是不是一头雾水。那么下面说下具体过程。

一般Java这么写:

java 复制代码
button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                 要执行的代码块
            }
        });

在 Kotlin 中,您可以使用 lambda 表达式作为需要函数式接口的方法的参数,例如OnClickListener. Kotlin 的 lambda 表达式会自动被视为函数式接口的实例,这是使 Kotlin 语法简洁且富有表现力的强大功能之一。

那么上述代码应该是这样:

java 复制代码
  button.setOnClickListener({要执行的代码块})

这样是不是看起来很奇怪,一般IDE 会提示:Lambda argument should be moved out of parentheses (Lambda 参数应移出括号)

Kotlin 有这样的语法约定,如果lambda 表达式是函数调用的最后一个实参,它可以放到括号的外边。那就变成了这样子

java 复制代码
  button.setOnClickListener(){要执行的代码块}

当lambda表达式时函数唯一的实参时,还可以去掉调用代码中的空括号对,那就变成了这样子:

java 复制代码
  button.setOnClickListener{要执行的代码块}

Lambda 表达式语法:

{x:Int,y:Int -> x+y}

上面示例中 -> 左边的 叫参数 , ->右边的叫表达式

如下例,将Lambda 存储到变量中,可以将这个函数单过普通函数对待:

Kotlin 复制代码
val operateOnNumbers = {a: Int, b: Int -> a + b}
fun main() {
    val result = operateOnNumbers(10, 5)
    println("Result of addition: $result")

    val subtractResult = operateOnNumbers(10, 5)
    println("Result of subtraction: $subtractResult")
}

未完待续...

相关推荐
小嘉丶学长11 小时前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节
迪菲赫尔曼11 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测
chari克里12 小时前
QT5.15.2 + msvc2022部署全流程说明(windows可联网环境)
开发语言·c++·qt
Hello.Reader12 小时前
tsrs 技术解析用 Rust 移植 TypeScript 7,类型检查还能怎样提速?
开发语言·rust·typescript
方白羽12 小时前
Android 双开环境底层剖析与风控检测落地
android·安全·app
透明的玻璃杯12 小时前
VS2015+QT 多线程
开发语言·qt
码匠许师傅12 小时前
【C++三方组件】mbedTLS:面向嵌入式的轻量 TLS
开发语言·c++
weixin_5633714713 小时前
Android Studio 2024 版 Device Explorer 打开方法
android·ide·android studio
迪菲赫尔曼13 小时前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测
2601_9628857213 小时前
2026 Python 股票数据接口选型指南(横评 + 决策树)
开发语言·python·区块链