当前位置: 首页 > news >正文

Lambda 编程(Kotlin)一

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

知识点:

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

Lambda 简介

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

举例(kotlin):

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

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

一般Java这么写:

button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {要执行的代码块}});

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

那么上述代码可以这样写:

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

这样是不是看起来很奇怪,一般IDE 会提示(非错误,黄色的波浪线):Lambda argument should be moved out of parentheses (Lambda 参数应移出括号)

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

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

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

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

Lambda 表达式语法:

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

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

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

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")
}

未完待续...

http://www.lryc.cn/news/145950.html

相关文章:

  • 网络字节序——TCP接口及其实现简单TCP服务器
  • RxJS如何根据事件创建Observable对象?
  • 网站常见安全漏洞 | 青训营
  • vue2使用 vis-network 和 vue-vis-network 插件封装一个公用的关联关系图
  • 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。
  • java-初识Servlet,Tomcat,JDBC
  • SpringBoot+mybatis+pgsql多个数据源配置
  • 视频汇聚/视频监控管理平台EasyCVR接入海康SDK协议后无法播放该如何解决?
  • MQ消息队列(主要介绍RabbitMQ)
  • 2023年7月天猫糕点市场数据分析(天猫数据怎么看)
  • 开源双语对话语言模型 ChatGLM-6B 本地私有化部署
  • Zabbix 5.0 媒体介质 邮箱配置例子
  • 基于Red Hat Enterprise Linux 7操作系统的PostgresSql15的备份恢复(实践笔记)
  • AMEYA360:类比半导体推出小尺寸低功耗仪表放大器INA103和INA104
  • 【Ubuntu20.04】安装gcc11 g++11, Ubuntu18.04
  • vim系列之常用命令
  • Scikit-Learn中的特征选择和特征提取详解
  • Python之动态规划
  • [ES]二基础 |
  • vscode vue3自定义自动补全
  • Spring Cloud + Spring Boot 项目搭建结构层次示例讲解
  • 使用cgroup工具对服务器某些/全部用户进行计算资源限制
  • C#获取DataTable的前N行数据然后按指定字段排序
  • Swift 中的动态成员查找
  • leetcode做题笔记102. 二叉树的层序遍历
  • python编写四画面同时播放swap视频
  • 用XSIBackup为VMware ESXi打造完美备份方案
  • React 项目中引入msal验证以及部分报错处理
  • Unity3D 2021 使用 SharpZipLib 遇到的安卓打包 I18N 相关问题
  • 软件工程(十五) 行为型设计模式(一)