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

【教程】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.lryc.cn/news/330824.html

相关文章:

  • C++的并发世界(三)——线程对象生命周期
  • SAD法(附python实现)和Siamese神经网络计算图像的视差图
  • 基于DWT(离散小波变换)的图像加密水印算法,Matlab实现
  • 【威胁情报综述阅读3】Cyber Threat Intelligence Mining for Proactive Cybersecurity Defense
  • 在编程中使用中文到底该不该??
  • PyQt6从入门到放弃
  • PhpWord导入试卷
  • C# 运算符重载 之前的小总结
  • XenCenter 2024 创建一个虚拟机
  • tomcat 知多少
  • 【详细讲解语言模型的原理、实战与评估】
  • Predict the Next “X” ,第四范式发布先知AIOS 5.0
  • PCL使用4PCS配准
  • 【六 (2)机器学习-机器学习建模步骤/kaggle房价回归实战】
  • vue源码解析——vue如何将template转换为render函数
  • 深入理解zookeeper
  • 【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏
  • phpmyadmin页面getshell
  • 题目:学习static定义静态变量的用法
  • 【C++】编程规范之函数规则
  • HTML常用的图片标签和超链接标签
  • 浏览器工作原理与实践--WebAPI:XMLHttpRequest是怎么实现的
  • TCP网络协议栈和Posix网络部分API总结
  • 《解释器模式(极简c++)》
  • c#仿ppt案例
  • 10.图像高斯滤波的原理与FPGA实现思路
  • WebGIS 地铁交通线网 | 图扑数字孪生
  • Docker 哲学 - push 本机镜像 到 dockerhub
  • 大数据学习第十二天(hadoop概念)
  • 管理科学笔记