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

建设河南网站公司高管培训课程

建设河南网站,公司高管培训课程,郸城网站建设,站长工具樱花在 Kotlin 编程中,Lambda 表达式是一项非常实用且强大的功能。今天,我们就来深入探讨一下 Lambda 表达式的语法结构,以及它那些令人 “又爱又恨” 的简化写法。 一、Lambda 表达式完整语法结构 Lambda 表达式最完整的语法结构定义为{参数名…

在 Kotlin 编程中,Lambda 表达式是一项非常实用且强大的功能。今天,我们就来深入探讨一下 Lambda 表达式的语法结构,以及它那些令人 “又爱又恨” 的简化写法。

一、Lambda 表达式完整语法结构

Lambda 表达式最完整的语法结构定义为{参数名1: 参数类型, 参数名2: 参数类型 -> 函数体} 。这里,最外层的大括号是 Lambda 表达式的标志;如果有参数传入,需要在大括号内声明参数列表,参数列表以->符号结尾,该符号同时也表示函数体的开始。在函数体中,我们可以编写代码,但不建议编写过长的代码,因为最后一行代码会自动作为 Lambda 表达式的返回值。

二、通过实例理解 Lambda 表达式的应用

以找出单词最长的水果为例,我们常用的函数式 API 中maxBy函数,本质上就是一个接收 Lambda 类型参数的普通函数。在遍历集合时,maxBy函数会将每次遍历的值作为参数传递给 Lambda 表达式,根据我们传入的条件来遍历集合,从而找到该条件下的最大值。

比如,我们有如下水果列表:

val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")

想要找到单词最长的水果,条件自然是单词的长度。我们套用 Lambda 表达式完整语法结构来使用maxBy函数:

val list = listOf("Apple", "Banana", "Orange", "Pear", "Grape", "Watermelon")
val lambda = { fruit: String -> fruit.length }
val maxLengthFruit = list.maxBy(lambda)

在这段代码中,maxBy函数接收了一个 Lambda 参数,该参数完全遵循我们前面学习的表达式语法结构,相对来说比较容易理解。

三、Lambda 表达式的逐步简化

虽然上述写法可以正常运行,但略显啰嗦,有许多可简化的地方。接下来,我们就通过一步步推导,让代码变得更加简洁。

第一步:直接传入 Lambda 表达式

我们不需要专门定义一个lambda变量,而是可以直接将 Lambda 表达式传入maxBy函数当中,简化后的代码如下:

val maxLengthFruit = list.maxBy({ fruit: String -> fruit.length })

第二步:调整 Lambda 表达式位置

Kotlin 规定,当 Lambda 参数是函数的最后一个参数时,可以将 Lambda 表达式移到函数括号的外面,代码进一步简化为:

val maxLengthFruit = list.maxBy() { fruit: String -> fruit.length }

第三步:省略函数括号

如果 Lambda 参数是函数的唯一一个参数,还能将函数的括号省略,代码变成:

val maxLengthFruit = list.maxBy { fruit: String -> fruit.length }

此时,代码看起来清爽了许多。

第四步:利用类型推导省略参数类型

由于 Kotlin 拥有出色的类型推导机制,Lambda 表达式中的参数列表在大多数情况下不必声明参数类型,代码可进一步简化:

val maxLengthFruit = list.maxBy { fruit -> fruit.length }

第五步:使用it关键字

当 Lambda 表达式的参数列表中只有一个参数时,也不必声明参数名,而是可以使用it关键字来代替,最终得到的代码为:

val maxLengthFruit = list.maxBy { it.length }

通过这样一步步的推导,我们就得到了和一开始那段函数式 API 一模一样的简洁写法,是不是对 Lambda 表达式的理解更加深刻、轻松了呢?

掌握 Lambda 表达式的这些语法和简化技巧,能让我们在 Kotlin 编程中写出更加简洁、优雅的代码,提高编程效率。希望今天的分享能帮助大家更好地驾驭 Lambda 表达式!


文章转载自:

http://sQwLZ26k.bndkf.cn
http://18fVOqHV.bndkf.cn
http://bEg4Dtmb.bndkf.cn
http://Tv94EciC.bndkf.cn
http://QODmdebI.bndkf.cn
http://nQao0Ej9.bndkf.cn
http://E43L1mKy.bndkf.cn
http://d03svgBL.bndkf.cn
http://jC49Ev0B.bndkf.cn
http://VkJVLvwi.bndkf.cn
http://4SbzpIGs.bndkf.cn
http://6KoIomEy.bndkf.cn
http://gyEMGRQN.bndkf.cn
http://AZ0Ug61S.bndkf.cn
http://WrnX7e9p.bndkf.cn
http://8RWzLLYj.bndkf.cn
http://7X6bA91f.bndkf.cn
http://77UtXovK.bndkf.cn
http://O5Q3zNl9.bndkf.cn
http://vfgumcWT.bndkf.cn
http://Od1VXHmt.bndkf.cn
http://uHZB9MUv.bndkf.cn
http://2fvRc75n.bndkf.cn
http://WLMbQ74C.bndkf.cn
http://4josAHgx.bndkf.cn
http://2br3c9d5.bndkf.cn
http://IsWjLVzO.bndkf.cn
http://dChY1wO5.bndkf.cn
http://9yDErChg.bndkf.cn
http://cD3I7YbW.bndkf.cn
http://www.dtcms.com/wzjs/623190.html

相关文章:

  • 英文网站源码下载wordpress菜单背景半透明
  • 网站建设哪种好wordpress+用js
  • 建设网站与维护网络推广的方法有多选题
  • 网站建设 协议书最好的设计师网站
  • 网站开发费用算无形资产么优秀logo设计解析
  • 钢铁网站哪家做的好制作书签的感受心得
  • 建设部网站安全考核证书查询北京公司注册查询
  • 教育微网站建设seo网站搭建是什么
  • 网页设计图片轮播的代码宁国市网站关键词优化外包
  • 微信设计网站如何做网站meta设置
  • seo网站推广招聘网站建设报价清单
  • 酒店网站免费建设网站里做个子网页怎么做
  • 网站排名下降原因地产项目网站
  • 做网站的流程前端做什么运营好网站
  • 怎么自己做网站怎么赚钱网站建设需要多少技术
  • 手机社交网站建设微信网站开发工具
  • 外部网站 同意加载网红营销推广
  • 学广告设计去哪个学校好绍兴seo排名外包
  • 自己做网站的方法成都个人网站制作
  • 正能量不良网站进入窗口免费阅读百度服务中心
  • 买东西最便宜的网站贵州省兴义市建设局网站
  • 网站单向外链推广工具注册个人网站
  • 汉中城乡建设网站接工程平台
  • ui作品集 网站怎么做网络营销是什么工作主要干啥
  • 广州专业网站建设哪家好九冶建设有限公司网站
  • 电商网站建设方式网站开发试题
  • 公司做网站怎么赚钱吗WordPress 采集文章 图片
  • 徐州自助建站模板横向网站模板
  • 网站建设主要职责无锡网络公司网站建设app微信公众号平
  • 网站开发过程有几个阶段pc端浏览器手机版