【教程】Kotlin语言学习笔记(五)——Lambda表达式与条件控制
写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!
【Kotlin语言学习】系列文章
第一章 《认识Kotlin》
第二章 《数据类型》
第三章 《数据容器》
第四章 《方法》
第五章 《Lambda表达式与条件控制》
第六章 《泛型》
一、Lambda表达式
在Kotlin中,Lambda表达式是一种轻量级的匿名函数,它可以作为参数传递给其他函数。Lambda表达式的语法形式如下。
{ 参数列表 -> 函数体 }
其中,参数列表是可选的,函数体可以是一个表达式或者代码块。Lambda表达式的类型是函数类型,可以通过声明一个变量或参数的方式来存储它。
Lambda表达式的主要优点之一是它的简洁性和灵活性。它允许在需要函数作为参数的地方以一种简洁、直观的方式来定义函数行为。Lambda表达式常用于Kotlin中的函数式编程,例如在集合操作中使用map
、filter
、reduce
等高阶函数时经常会用到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的函数,形参设有两个,分别是number
和check
,其中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,一个永远在学习中的探索者,关注我,让我们一起进步!
相关文章:
【教程】Kotlin语言学习笔记(五)——Lambda表达式与条件控制
写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 第二章 《数据类型》 第三章 《数据容器》 第四章 《方法》 第五章 《L…...
C++的并发世界(三)——线程对象生命周期
0.案例代码 先看下面一个例子: #include <iostream> #include <thread>void ThreadMain() {std::cout << "begin sub thread:" << std::this_thread::get_id()<<std::endl;for (int i 0; i < 10; i){std::cout <&…...
SAD法(附python实现)和Siamese神经网络计算图像的视差图
1 视差图 视差图:以左视图视差图为例,在像素位置p的视差值等于该像素在右图上的匹配点的列坐标减去其在左图上的列坐标 视差图和深度图: z f b d z \frac{fb}{d} zdfb 其中 d d d 是视差, f f f 是焦距, b b…...
基于DWT(离散小波变换)的图像加密水印算法,Matlab实现
博主简介: 专注、专一于Matlab图像处理学习、交流,matlab图像代码代做/项目合作可以联系(QQ:3249726188) 个人主页:Matlab_ImagePro-CSDN博客 原则:代码均由本人编写完成,非中介,提供…...
【威胁情报综述阅读3】Cyber Threat Intelligence Mining for Proactive Cybersecurity Defense
【威胁情报综述阅读1】Cyber Threat Intelligence Mining for Proactive Cybersecurity Defense: A Survey and New Perspectives 写在最前面一、介绍二、网络威胁情报挖掘方法和分类A. 研究方法1) 第 1 步 - 网络场景分析:2) 第 2 步 - 数据…...
在编程中使用中文到底该不该??
看到知乎上有个热门问题,为什么很多人反对中文在编程中的使用? 这个问题有几百万的浏览热度,其中排名第一的回答非常简洁,我深以为然: 在国内做开发,用中文写注释、写文档,是非常好的习惯&…...
PyQt6从入门到放弃
PyQt6从入门到放弃 安装PyQt6 pip install PyQt6# 查看QT和PyQT的版本 from PyQt6.QtCore import QT_VERSION_STR from PyQt6.QtCore import PYQT_VERSION_STR print(QT_VERSION_STR) print(PYQT_VERSION_STR)PyQt6模块 PyQt6类由一系列模块组成包括QtCore、QtGui、QtWidgets…...
PhpWord导入试卷
规定word导入格式 1、[单选题][2024][一般]题目1 A.选项1 B.选项2 C.选项3 D.选项4 答案:D 试题图片(上传多媒体图片): 分数:2 答案解析: 2、[多选题][2024][困难]题目2 A.选项1 B.选项2 C.选项3 D.选项4 E…...
C# 运算符重载 之前的小总结
C# 中支持运算符重载,所谓运算符重载就是我们可以使用自定义类型来重新定义 C# 中大多数运算符的功能。运算符重载需要通过 operator 关键字后跟运算符的形式来定义的,我们可以将被重新定义的运算符看作是具有特殊名称的函数,与其他函数一样&…...
XenCenter 2024 创建一个虚拟机
前言 实现,创建一个虚拟机,内存,cpu,磁盘,名称,网卡,配置 Xen Center 2024 download 创建虚拟机 选择系统类型 定义虚拟机名称 选择ISO镜像库 选择主服务器 分配虚拟机内存,cpu资源…...
tomcat 知多少
Tomcat的缺省端口: 默认端口为8080,可以通过在tomcat安装包conf目录下,service.xml中的Connector元素的port属性来修改端口。 tomcat 常见 Connector 运行模式(优化): 这三种模式的不同之处如下: BIO : 一…...
【详细讲解语言模型的原理、实战与评估】
🌈个人主页:程序员不想敲代码啊🌈 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家🏆 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提…...
Predict the Next “X” ,第四范式发布先知AIOS 5.0
今天,第四范式发布了先知AIOS 5.0,一款全新的行业大模型平台。 大语言模型的原理是根据历史单词去不断预测下一个单词,换一句常见的话:Predict the Next “Word”。 当前对于行业大模型的普遍认知就是沿用这种逻辑,用大…...
PCL使用4PCS配准
一、代码 C++ #include <pcl/registration/ia_fpcs.h> // 4PCS算法 #include <pcl/point_types.h> #include <pcl/point_cloud.h> #include <pcl/io/pcd_io.h> #include <pcl/io/ply_io.h> #include <boost/thread/thread.hpp> #include…...
【六 (2)机器学习-机器学习建模步骤/kaggle房价回归实战】
一、确定问题和目标: 1、业务需求分析: 与业务团队或相关利益方进行深入沟通,了解他们的需求和期望。 分析业务流程,找出可能的瓶颈、机会或挑战。 思考机器学习如何帮助解决这些问题或实现业务目标。 2、问题定义:…...
vue源码解析——vue如何将template转换为render函数
Vue 将模板(template)转换为渲染函数(render function)是 Vue 编译器的核心功能,它是 Vue 实现响应式和虚拟 DOM 的关键步骤。在 Vue 中,模板(template)是开发者编写的类似 HTML 的代…...
深入理解zookeeper
如果是zookeeper的初学者,可以看: zookeeper快速入门(合集)-CSDN博客 如果想要深入理解zookeeper,并在面试中取得更好的表现,可以看下面的文章,都是偏面试向的角度写的。 三分钟明白zookeeper…...
【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏
漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin LearnDash LMS 4.10.2及之前版本存在安全漏洞&#x…...
phpmyadmin页面getshell
0x00 前言 来到phpmyadmin页面后如何getshell呢?下面介绍两种方法 0x01 select into outfile直接写入 1、利用条件 对web目录需要有写权限能够使用单引号(root) 知道网站绝对路径(phpinfo/php探针/通过报错等) secure_file_priv没有具体值 2、查看secure_file…...
题目:学习static定义静态变量的用法
题目:学习static定义静态变量的用法 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheate…...
【C++】编程规范之函数规则
对所有函数入参进行合法性检查 在编写函数时,应该始终对所有传入的参数进行合法性检查,以防止出现意外的错误或异常情况。这包括但不限于检查指针是否为空、整数是否在有效范围内、数组是否越界等等。通过对参数进行严格的合法性检查,可以避免…...
HTML常用的图片标签和超链接标签
目录 一.常用的图片标签和超链接标签: 1.超链接标签: 前言: 超链接的使用: target属性: 1)鼠标样式: 2)颜色及下划线: 总结: 2.图片标签: 前言: img的使用: 设置图片: 1.设置宽度和高度: 2.HTM…...
浏览器工作原理与实践--WebAPI:XMLHttpRequest是怎么实现的
在上一篇文章中我们介绍了setTimeout是如何结合渲染进程的循环系统工作的,那本篇文章我们就继续介绍另外一种类型的WebAPI——XMLHttpRequest。 自从网页中引入了JavaScript,我们就可以操作DOM树中任意一个节点,例如隐藏/显示节点、改变颜色、…...
TCP网络协议栈和Posix网络部分API总结
文章目录 Posix网络部分API综述TCP协议栈通信过程TCP三次握手和四次挥手(看下图)三次握手常见问题?为什么是三次握手而不是两次?三次握手和哪些函数有关?TCP的生命周期是从什么时候开始的? 四次挥手通信状态…...
《解释器模式(极简c++)》
本文章属于专栏- 概述 - 《设计模式(极简c版)》-CSDN博客 模式说明 方案: 对每个data建立一个单点解释器对象X,dataA和dataB之间的关系,建立一个关系解释器对象Y,这里的Y处理的是X1和X2。这样,…...
c#仿ppt案例
画曲线 namespace ppt2024 {public partial class Form1 : Form{public Form1(){InitializeComponent();}//存放所有点的位置信息List<Point> lstPosition new List<Point>();//控制开始画的时机bool isDrawing false;//鼠标点击开始画private void Form1_MouseD…...
10.图像高斯滤波的原理与FPGA实现思路
1.概念 高斯分布 图像滤波之高斯滤波介绍 图像处理算法|高斯滤波 高斯滤波(Gaussian filter)包含很多种,包括低通、高通、带通等,在图像上说的高斯滤波通常是指的高斯模糊(Gaussian Blur),是一种高斯低通滤波。通常这个算法也可以用来模…...
WebGIS 地铁交通线网 | 图扑数字孪生
数字孪生技术在地铁线网的管理和运维中的应用是一个前沿且迅速发展的领域。随着物联网、大数据、云计算以及人工智能技术的发展,地铁线网数字孪生在智能交通和智慧城市建设中的作用日益凸显。 图扑软件基于 HTML5 的 2D、3D 图形渲染引擎,结合 GIS 地图…...
Docker 哲学 - push 本机镜像 到 dockerhub
注意事项: 1、 登录 docker 账号 docker login 2、docker images 查看本地镜像 3、注意的是 push镜像时 镜像的tag 需要与 dockerhub的用户名保持一致 eg:本地镜像 express:1 直接 docker push express:1 无法成功 原因docker不能识别 push到哪里 …...
大数据学习第十二天(hadoop概念)
1、服务器之间数据文件传递 1)服务器之间传递数据,依赖ssh协议 2)http协议是web网站之间的通讯协议,用户可已通过http网址访问到对应网站数据 3)ssh协议是服务器之间,或windos和服务器之间传递的数据的协议…...
交互式网站的发展/优化大师下载
一、本节课教学内容的本质、地位、作用分析分类加法计数原理与分步乘法计数原理是人类在大量的实践经验的基础上归纳出的基本规律,它们不仅是推导排列数、组合数计算公式的依据,而且其基本思想方法也贯穿在解决本章应用问题的始终,在本章中是…...
做购物网站平台/深圳知名网络优化公司
存在即是合理的。 表格的现在还是较为常用的一种标签,但不是用来布局,常见处理、显示表格式数据。创建表格在HTML网页中,要想创建表格,就需要使用表格相关的标签。创建表格的基本语法格式如下:单元格内的文字......在上…...
一个数据库怎么做二个网站/百度收录技术
今天终于考完了70-528,长长舒口气 呵呵,可以安安心心的回国度假了。这次考试真是一波三折啊。下面先说说考试过程 一个月前开始准备考MCTS,但是当时只是似懂非懂这个东西,一直都觉得可有可无,所以当时也没有太放在心上。天天70-536的Training…...
自己注册了个域名想做一个网站/输入搜索内容
Redis中list数据结构,具有“双端队列”的特性,同时redis具有持久数据的能力,因此redis实现分布式队列是非常安全可靠的。它类似于JMS中的“Queue”,只不过功能和可靠性(事务性)并没有JMS严格。 Redis中的队列阻塞时,整…...
网站建站流程图/最新军事新闻 今日 最新消息
(一) 函数介绍 1. 函数:是组织好的,可重复使用的,用来实现特定功能的代码段。 eg. len():实现统计长度这一特定功能的代码段。 2. 函数好处: * 将功能封装在函数内,可随时随地重复…...
网站接口怎么做/东莞互联网推广
1. 问题 为描述方便,我们简化下问题。 {assign var"star" value"胡哥;吴秀波;王宝强;三小只"} {$star|regex_replace:/;/:/} 在smarty模板中,将“;”(半角分号)替换为“/”。在看这段代码时,第…...