【教程】Kotlin语言学习笔记(五)——Lambda表达式与条件控制

文首标志
写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!


【Kotlin语言学习】系列文章

第一章 《认识Kotlin》
第二章 《数据类型》
第三章 《数据容器》
第四章 《方法》
第五章 《Lambda表达式与条件控制》
第六章 《泛型》


一、Lambda表达式

在Kotlin中,Lambda表达式是一种轻量级的匿名函数,它可以作为参数传递给其他函数。Lambda表达式的语法形式如下。

{ 参数列表 -> 函数体 }

其中,参数列表是可选的,函数体可以是一个表达式或者代码块。Lambda表达式的类型是函数类型,可以通过声明一个变量或参数的方式来存储它。

Lambda表达式的主要优点之一是它的简洁性和灵活性。它允许在需要函数作为参数的地方以一种简洁、直观的方式来定义函数行为。Lambda表达式常用于Kotlin中的函数式编程,例如在集合操作中使用mapfilterreduce等高阶函数时经常会用到Lambda表达式。

下面是简单的示例。

// 自定义函数:使用Lambda表达式来判断一个数字是否为偶数
fun isEven(number: Int, check: (Int) -> Boolean): Boolean {return check(number)
}fun main() {val number = 10// 使用Lambda表达式作为参数,判断一个数字是否为偶数val result = isEven(number) { it % 2 == 0 }if (result) {println("$number 是偶数")} else {println("$number 是奇数")}
}

阅读示例代码,可以看到首先自定义的isEven函数中就使用了Lambda表达式,其函数定义逻辑为定义一个名为isEven的函数,形参设有两个,分别是numbercheck,其中number要求传入的是整型变量,而check则是一个函数,这个函数并没有通过传统方式定义,而是通过Lambda表达式,表示传入一个整型变量,返回一个布尔值,这个check函数在函数内部使用,作为返回值,定义函数返回值类型为布尔值——整个函数定义表达式的含义就是输入整型变量,返回一个布尔值。

而在接下来的输出函数中,设定number变量为10,使用isEven函数令number返回一个布尔值,这里又使用了一个Lambda表达式来判断返回的值是否除以2无余数,是则为真,否则为假,接着就使用了一个if判断语句将偶数判断结果打印出来。

可以看到,在Lambda表达式中->左边是参数列表,而右边则是Lambda函数的具体函数和操作。

其中要注意的是,it在Lambda表达式中只有参数仅有一个的时候才可以使用;同时,it不作为关键字,却同样可以在调用变量(比如函数定义)中作为单个变量的隐式名称,从而简洁语句编写。

二、条件控制

条件控制语句在每门编程语言中都是必不可少的部分,在Kotlin语言中是使用if-else语句和when语句来实施条件控制。

那么设计一个简单的逻辑,要求输入两个数字,输出较大的那一个。

如果使用if语句,则设计的语句可以是这样。

fun main() {val x = 10val y = 20// 使用 if-else 控制结构if (x > y) {println("x 大于 y")} else if (x < y) {println("x 小于 y")} else {println("x 等于 y")}
}

同其他语言的if语句一样,使用if关键字设定条件,同时else if设置第二个条件,剩余情况则在else下输出。

而如果使用when判断语句设计,则是这样的。

fun main() {val x = 10val y = 20// 使用 when 表达式进行条件控制when {x > y -> println("x 大于 y")x < y -> println("x 小于 y")else -> println("x 等于 y")}// 使用 when 表达式带参数的形式进行条件控制when (x) {10 -> println("x 等于 10")20 -> println("x 等于 20")else -> println("x 既不等于 10 也不等于 20")}
}

可以看到,如果使用when语句对于多结果可能性的判断情况更为合适。->左边是判断条件,右边则是满足该条件的情况下执行的逻辑;与if语句一样,也有else关键字代表剩余判断情况。


我是EC,一个永远在学习中的探索者,关注我,让我们一起进步!

文末标志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/588221.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redission--布隆过滤器解决缓存穿透问题

布隆过滤器在缓存穿透问题中的使用 布隆过滤器的核心是一个位数组 布隆过滤器的误判 使用Redission的布隆过滤器步骤 添加 Redission 依赖&#xff1a;首先需要将 Redission 添加到你的 Java 项目中&#xff0c;你可以通过 Maven 来添加 Redission 的依赖。 创建 Redissio…

GT收发器PHY层设计(2)GT_module模块设计

文章目录 前言一、设计框图二、例化IP核端口三、common_reset_i模块四、gt_usrclk_source模块五、IBUFDS_GTE2和gtwizard_0_common模块六、顶层模块gt_module总结 前言 根据官方的example design设计一个自定义协议的高速PHY设计 一、设计框图 设计思路及代码思路参考FPGA奇哥…

九州未来深度参与元宇宙标准会议周

近日&#xff0c;元宇宙标准化工作组成立大会暨第一次全体委员会会议在浙江青田成功举办。本次会议由元宇宙标准化工作组主办&#xff0c;中国电子技术标准化研究院、中共青田县委 青田县人民政府承办&#xff0c;涵盖了《元宇宙参考架构》国家标准编制会、《工业元宇宙参考架构…

AI音乐GPT时刻来临:Suno 快速入门手册!

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

铸铁平台划线基准的基本操作——泊头市北重厂家

划线基准是指在铸铁平台上划定一条直线或直角线&#xff0c;用作测量和定位的参考线。下面是铸铁平台划线基准的操作步骤&#xff1a; 准备工具和材料&#xff1a;铸铁平台、直尺、铅笔或划线笔、胶带等。 清洁铸铁平台&#xff1a;使用清洁布或刷子清除铸铁平台表面的尘土和杂…

MySQL 中将使用逗号分隔的字段转换为多行数据

在我们的实际开发中&#xff0c;经常需要存储一些字段&#xff0c;它们使用像, - 等连接符进行连接。在查询过程中&#xff0c;有时需要将这些字段使用连接符分割&#xff0c;然后查询多条数据。今天&#xff0c;我们将使用一个实际的生产场景来详细解释这个解决方案。 场景介绍…

WebGIS 地铁交通线网数据可视化监控平台

数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展&#xff0c;地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎&#xff0c;结合 GIS 地图&…

c++ 插值搜索-迭代与递归(Interpolation Search)

给定一个由 n 个均匀分布值 arr[] 组成的排序数组&#xff0c;编写一个函数来搜索数组中的特定元素 x。 线性搜索需要 O(n) 时间找到元素&#xff0c;跳转搜索需要 O(? n) 时间&#xff0c;二分搜索需要 O(log n) 时间。 插值搜索是对实例二分搜索的改进&#xff0c;…

LC 110.平衡二叉树

110. 平衡二叉树 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 示例 1&#xff1a; 输入&#xff1a; root [3,9,20,null,null,15,7]…

xilinx fpga程序固化

一、前言 xilinx 旗下的产品主要有包含有处理器的SOC系列&#xff0c;也有只有纯逻辑的fpga&#xff0c;两者的程序固化的方法并不相同&#xff0c;本文介绍只包含纯逻辑而不涉及处理器的fpga的代码固化。 二、固化流程 将工程综合&#xff0c;实现&#xff0c;并得到比特流…

免疫优化算法

有点东西&#xff0c;遗传进化机制好像更完善了。 与遗传算法大体框架类似&#xff0c;遗传变异等细节上有差别

前后端开发之——文章分类管理

原文地址&#xff1a;前后端开发之——文章分类管理 - Pleasure的博客 下面是正文内容&#xff1a; 前言 上回书说到 文章管理系统之添加文章分类。就是通过点击“新建文章分类”按钮从而在服务端数据库中增加一个文章分类。 对于文章分类这个对象&#xff0c;增删改查属于配…