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

Kotlin Lambda使用

Kotlin Lambda使用

fun main() /*: Unit*/ {// Lambda会慢慢的难度升级// Kotlin Unit == Java void// TODO 下面全部都是函数声明, 既然是函数声明,就不能调用// 函数的声明 用lambda去描述函数的声明val method1 : () -> Unitval method2 : (Int, Int) -> Unitval method3: (String, Double) -> Anyvar method4 : (Int, Double, Long, String) -> Booleanvar method5 : (Int, Int) -> Int// 函数的声明 + 函数的实现// : (参数)->返回  方式一 () 基本上属于声明 todo 上面已经讲过了 就是函数的声明// = {参数->方式}  方式二 () 基本上属于声明实现结合val method01 : () -> Unit = { println("我是method01函数") }method01() // 调用函数  () == 操作符重载 invoke操作符method01.invoke() // 调用函数val method02 = { "我是method02函数" }println(method02())val method03 = {str: String -> println("你传递进来的值是:$str")}method03("jin")val method04 = {number1: Int, number2:Int -> number1.toString() + number2.toString()}println(method04(1, 2))val method05 = {number1: Int, number2:Int -> number1 + number2}println(method05(1, 2))val method06 : (Int) -> String // 先声明method06 = fun(value: Int) : String = value.toString() // 后实现println(method06(88))// 用 先声明 后实现 来 自动推断val method07 : (Int) -> String // 先声明method07 = fun(value) = value.toString() // 后实现println(method07(99))// 声明 + 实现 一气呵成val method08: (Int) -> String /*左边的是声明*/         /*右边是实现*/ = {value-> "$value aaa" }println(method08(77))val method09 : (String, String) -> Unit  = {aStr, bStr -> println("aStr:$aStr, bStr:$bStr") }method09.invoke("AA", "BB")val method10 : (String) -> Unit = { /*it ->*/ // 如果你只有一个参数的话,如果你不写,默认就有it,他会自动给你增加itprintln("你传递进来的值是:$it")}method10("李元霸")val method11 : (Int) -> Unit = {when(it) {1 -> println("你传递进来的是一") // Unitin 20..60 -> println("你传递的是 20 到 60 之内的数字") // Unitelse -> println("都不满足") // Unit}}method11(60)val method11s : (Int) -> String = {when(it) {1 -> "你传递进来的是一" // Stringin 20..60 -> "你传递的是 20 到 60 之内的数字" // Stringelse -> "都不满足" // String}}println(method11s(60))// _ 拒收,可以提高一点点性能val method13 : (Int, Int) -> Unit = {_, number2->println("你传递的第二个参数是:$number2")}method13.invoke(100, 200) // 用户对 不用修改// (Any) -> Anyval method14 = {str: Any -> str}println(method14(true))println(method14(57.654f))val method15 /*: (Char) -> Unit*/ ={sex : Char -> println(if (sex == '男') "你是男生" else if (sex == '女') "你是女生" else "未知") }method15.invoke('男')// (Int) -> Unitvar method16 = {number: Int -> println("你的值是:$number")} // 被覆盖后,就失效了// 覆盖method16, 虽然你覆盖了,类型还是 (Int) -> Unitmethod16 = { println("覆盖的也能拿到值:$it") }method16(999)val method16ss : (String ? /*= ""*/, String) -> Unit = {str /*= "default"*/, str2->println("str:$str, str2:$str2")}method16ss("李元霸", "李连杰")method16ss(null, "李连杰")// 需求:你传入什么,我就打印什么 并且输出// (Any) -> Anyval method17 = {str: Any ->println("你传递了:$str")str // lambda最后一行作为返回值}println(method17(34534))println(method17('C'))println(method17("DDDD"))// 给String增加 匿名扩展函数val method19 : String.() -> Unit = {// this == String本身 == 调用者本身 == "DDD"println("你是$this")}"DDD".method19()val method20 : Int.(Int) -> String = { "两数相加的结果是:${this + it}" }println(1.method20(100))println(method20(1, 100))val method21 : Double.(Double, Double) -> Unit = {d1, d2 -> println("三数相加:${this + d1 + d2}")}method21.invoke(55.5, 66.6, 77.7)55.5.method21(66.6, 77.7)val method22 : Char.(String) -> Unit= { println(if (this == '男') "先生你好" else if (this == '女') "女生你好" else it)}'男'.method22("未知人类")'A'.method22("未知人类")fun Char.method23(default: String) {println(if (this == '男') "先生你好" else if (this == '女') "女生你好" else default)}'男'.method23("未知人类")'A'.method23("未知人类")// TODO 我们前面一直在玩输入,   现在我们开始玩输出(返回类型)fun t01() { println(1) } // 默认Unit,除非我们指定类型fun t02() {4646.5f} // 默认Unitfun t03() {true} // 默认Unitfun t04() : String {return "Derry"} // 指定Stringfun t05() : Int { return 99} // 指定Intfun s01() = {} // () -> Unit    函数返回一个函数fun s02() = { println("OK")} // () -> Unit    函数返回一个函数s02()()fun s03() : Char = run { 'A' } // Char  run返回 {}里面的函数返回类型fun s04() : () -> Boolean = { true } // () -> Boolean 函数返回一个函数println(s03())println(s04()())}// public static
// 给String增加 具名的shows扩展函数
fun String.shows() {// this == String本身 == 调用者本身 == "DDD"println("你是$this")
}

相关文章:

Kotlin Lambda使用

Kotlin Lambda使用 fun main() /*: Unit*/ {// Lambda会慢慢的难度升级// Kotlin Unit Java void// TODO 下面全部都是函数声明, 既然是函数声明,就不能调用// 函数的声明 用lambda去描述函数的声明val method1 : () -> Unitval method2 : (Int, In…...

华容道问题求解第一部分_思路即方案设计

一、前言 华容道是一种传统的益智游戏,通常由一个长方形木板和若干个方块组成。其中包括一个或多个不同颜色的方块(也称为车块)和其他大小相同的方块(也称为障碍块)。游戏的目标是将车块从木板的一个端点移动到另一个…...

测试---UI自动化测试介绍

1、什么是自动化测试 概念:由程序代替人工进行系统校验的过程。--------计算机自己执行,好比手机上安装一个软件软件微信,抖音,微博之类的,在应用商城里面,下载对应app后,手机系统程序会自动安…...

DHCP Host Name

文章目录 前言DHCP OptionOption (12) Host Namednsmasq 前言 打开路由器页面,看到下面连接的设备,有的显示设备名称 Tmall-Genie、ESP-C37CE8,而有的直接显示 MAC 地址 D2:B0:XX:XX:XX:XX。 这个名称是哪里来的呢? 这就是我们今…...

uniapp到底用什么ui框架最合适-关于uni-app的ui库、ui框架、ui组件

文章目录 直接看答案关于uni-app的ui库、ui框架、ui组件组件的概念扩展组件的选择uni ui如何使用uni ui 综上,官方对组件的使用建议是:附录:其他全端兼容ui库参考文章: 直接看答案 如果想自己纯手写,直接用内置组件。…...

Flask 最佳实践(二)

Flask是一个轻量级而灵活的Web框架,提供了足够的自由度让开发者根据项目的需求进行定制。然而,为了在大型项目中保持代码的可维护性和可扩展性,建议采用以下一些建议的最佳实践。 在上一篇博客中,讲述了项目结构、蓝图相关的最佳实…...

【MATLAB源码-第93期】基于matlab的白鲸优化算法(BWO)和鲸鱼优化算法(WOA)机器人栅格路径规划对比。

操作环境: MATLAB 2022a 1、算法描述 白鲸优化算法(BWO) 白鲸优化算法是受到白鲸捕食和迁徙行为启发的一种算法。其主要特点和步骤包括: 1. 搜索食物(全局搜索):算法模仿白鲸寻找食物的行为。…...

nodejs微信小程序+python+PHP在线购票系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…...

卷积神经网络训练情感分析

文章目录 1 CNN在自然语言的典型应用2 代码解释3 建议 1 CNN在自然语言的典型应用 卷积的作用在于利用文字的局部特征,一个词的前后几个词必然和这个词本身相关,这组成该词所代表的词群词群进而会对段落文字的意思进行影响,决定这个段落到底…...

github新建项目

参考链接:Github上建立新项目超详细方法过程 在这里新建一个repositories 接下来就选择相关的信息: 然后create a new就行了 接下来需要创建文件:(同时通过upload上传文件) 每次最多上传100个文件,然后保…...

CRC(循环冗余校验)直接计算和查表法

文章目录 CRC概述CRC名词解释宽度 (WIDTH)多项式 (POLY)初始值 (INIT)结果异或值 (XOROUT)输入数据反转(REFIN)输出数据反转(REFOUT) CRC手算过程模二加减&am…...

【算法思考记录】力扣2952. 需要添加的硬币的最小数量【C++,思路挖掘,贪心与证明】

原题链接 文章目录 需要添加的硬币的最小数量:贪心算法实现题目概述示例分析 关键思路分析贪心算法的优化选择证明案例推演与算法实现 C 实现结论 需要添加的硬币的最小数量:贪心算法实现 题目概述 在这个困难难度的算法题中,我们要解决的…...

用友NC JiuQiClientReqDispatch反序列化RCE漏洞复现

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具,用友NC提供了一系列业务管理模块,包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等,帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友 NC JiuQiClientReqDispatch 接口存在…...

Linux:docker镜像的创建(5)

1.基于已有镜像创建 步骤: 1.将原始镜像加入容器并运行 2.在原始镜像中部署各种服务 3.退出容器 4.使用下面命令将容器生成新的镜像 现在我们在这个容器里做了一些配置,我们要把他做成自己镜像 docker commit -m "centos7_123" -a "tarr…...

数据结构与算法-D2D3线性表之顺序表

线性表:包含若干数据元素的一个线性序列,特征如下: 1)对非空表,a0是表头,无前驱; 2)an-1是表尾,无后继; 3)其他元素仅且仅有一个前驱,…...

01_W5500简介

目录 W5500简介: 芯片特点: 全硬件TCPIP协议栈: 引脚分布: W5500简介: W5500是一款高性价比的以太网芯片,其全球独一无二的全硬件TCPIP协议栈专利技术,解决了嵌入式以太网的接入问题,简单易用&#xff…...

异常 Exception 练习题 (未完成)

异常 Exception 练习题 try-catch异常处理1234 异常1(没有自己写)234 try-catch异常处理 1 class Exception01 {public static int method() {try {String[] names new String[3];//String[]数组if (names[1].equals("tom")) {//NullPointe…...

Linux系统编程:并发与信号总结

并发 并发是指两个或多个同时独立进行的活动。在计算机系统中,并发指的是同一个系统中多个独立活动同时进行,而非依次进行。 并发在计算机系统中的表现: 一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是…...

Jmeter 接口-加密信息发送(一百九十九)

方式1:使用函数助手 比如MD5加密方式: 如图,需要对${user}进行MD5加密 1、打开函数助手,找到MD5,输入需要加密的值 2、将${__MD5(${user},)}放到请求中 3、查看请求,请求成功 方式2:导入jar包…...

微信小程序nodejs+vue+uniapp视力保养眼镜店连锁预约系统

作为一个视力保养连锁预约的网络系统,数据流量是非常大的,所以系统的设计必须满足使用方便,操作灵活的要求。所以在设计视力保养连锁预约系统应达到以下目标: (1)界面要美观友好,检索要快捷简易…...

掌握Vue侦听器(watch)的应用

文章目录 🍁watch 的优缺点🍂Watch 优点🍂Watch 缺点 🍁watch 的用法🍂对象式 watch🍂函数式 watch 🍁代码示例🍂监听基本数据类型🍂监听复杂数据类型(Object…...

SAP-PP:PP顾问管理系统的相关建议

本博客将探讨生产计划领域的控制要点。这将有助于减少仓库库存不准确情况,因为库存不准确会导致实物库存、发货、成本核算和计划方面出现许多效率低下的问题。 在物料主数据关键字段中,必须配置计划交货时间、GR处理时间、内部生产时间、计划交货时间&a…...

Unity资源路径与读取

Unity资源路径有: 1、StreamingAssets:只读,一般用于存放应用程序运行时需要加载的资源文件,可以通过Application.streamingAssetsPath来获取。 2、PersistentDataPath:可读写,一般用于存放应用程序运行时…...

“大+小模型”赋能油气行业高质量发展

近日,中国石油石化科技创新大会暨新技术成果展在北京盛大举行,九章云极DataCanvas公司携油气行业一站式AI综合解决方案重磅亮相,充分展示了公司助推油气行业实现AI规模化应用深厚的AI技术实力和领先的AI应用水准,赢得了行业专家和…...

【win32_004】字符串处理函数

StringCbPrintf 函数 (strsafe.h):格式化字符串 STRSAFEAPI StringCbPrintf([out] STRSAFE_LPSTR pszDest,//目的缓冲区 LPSTR指针或者数组[in] size_t cbDest,//目的缓冲区大小[in] STRSAFE_LPCSTR pszFormat,//格式 例如: TEXT("%d&…...

如果不小心修改了按钮的名字并且忘记了原名字

出现上述情况,可以右边点击转到代码,注释掉问题行,此页的设计界面就恢复了。...

opencv阈值处理

阈值处理 二值化 自适应阈值 OTSU二值化...

html之JS

1、JS的引入 <!-- 内嵌 --><!-- <script>alert(4)</script> --><!-- 外引 --><!-- 内嵌和外引同时有的时候&#xff0c;内嵌被覆盖 --><script src"js/index.js" defer></script>//defer 延迟执行 2、js的变量使用…...

SQL Server的安装和首个库的创建

一、熟悉SQL Server的安装环境&#xff1b; 1.安装Microsoft的数据库管理系统SQL Server 2022 先把SQL Server 2022下载好后进行解压后出现以下界面然后点击基本进行安装 然后会出现以下界面&#xff1a; 一步步按照提示往下走即可&#xff0c;把SQL Server 2022安装完成后再…...

STM32下载程序的五种方法

刚开始学习 STM32 的时候&#xff0c;很多小伙伴满怀热情买好了各种设备&#xff0c;但很快就遇到了第一个拦路虎——如何将写好的代码烧进去这个黑乎乎的芯片&#xff5e; STM32 的烧录方式多样且灵活&#xff0c;可以根据实际需求选择适合的方式来将程序烧录到芯片中。本文将…...

湖北省建设银行网站6/电子商务主要干什么

对于数据分析师来说&#xff0c;可视化永远是一门不过时的学问&#xff0c;不仅因为上到企业领导、下到业务分析都要用到可视化&#xff0c;更因为它是分析师手中的优秀工具&#xff0c;它向我们揭示了数据背后的规律。 但很多人又会问&#xff0c;自己做的数据可视化丑出天际&…...

网站程序有哪些/百度站长工具seo综合查询

神经网络&#xff08;一&#xff09;神经网络模型理解1.1 模型1.2 神经网络模型&#xff08;前馈&#xff09;1.3 建立神经网络模型1.4 多元分类1.5 循环神经网络与对称连接网络&#xff08;二&#xff09;神经网络模型实现2.1 代价函数2.2 反向传播2.2.1 数学推导&#xff08;…...

谷歌做英文网站/女教师遭网课入侵直播录屏曝光i

课程内容是完整的&#xff0c;只是目录收集和编号的有点乱&#xff0c;大家下载后的都是正常的&#xff0c;不用担心(28)\\02-跟着江哥狂虐H5跨平台开发系列-认识HTML-第一次更新\\视频&#xff1b;目录中文件数:9个├─(28) 07-HTML作用(掌握)-李南江.mp4├─(29) 08-HTML发展…...

常州专业网站建设费用/seo优化方式包括

一、前言 该技术博客是关于我在B站自学计算机组成原理知识的笔记&#xff0c;该技术博客是根据 2019 王道考研 计算机组成原理 课程总结而成。该技术博客关于记录视频课程内容&#xff0c;如果对你有帮助&#xff0c;方便大家之后的学习&#xff0c;该系列博客会持续更新至全套…...

网站开发商品管理/seo外链友情链接

非打印字符 非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列&#xff1a; 字符描述\cx匹配由x指明的控制字符。例如&#xff0c; \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则&#xff0c;将 c 视为一个原义的 c 字符…...

网站的软件维护包括什么/百度识图扫一扫

实验9:默认路由所谓的默认路由&#xff0c;是指路由器在路由表中如果找不到到达目的网络的具体路由时&#xff0c;最后会采用的路由。默认路由通常会在存根网络&#xff08;Stub network&#xff0c;即只有一个出口的网络&#xff09;中使用。如图&#xff0c;图中左边的网络到…...