梳理学习Kotlin,when表达式的用法

Kotlin算法面试宝典:函数式编程与实战技巧 算法作为程序员的核心能力,在技术面试中占据重要地位。Kotlin作为现代JVM语言,凭借其函数式编程特性和丰富的集合操作API,为算法实现提供了独特优势。理解基础数据结构如数组、链表、哈希表的实现原理,掌握双指针、回溯、动态规划等算法模式,是解决复杂问题的关键。Kotlin的扩展函数、序列惰性求值和协程支持等特性,能够显著提升算法代码的可读性和执行效率。在面试场景中,合理运用Kotlin的when表达式、作用域函数和空安全机制,可以编写出既简洁又健壮的算法实现。本文通过典型算法题的Kotlin解决方案,展示 阅读详情
覆盖案例
var maxSurfaceTempIntK: Any = 100

fun calcNum() = 600

when(maxSurfaceTempIntK) {
    700 -> println("Equal 700")
    0, 1 , 2 -> println("Equal 0, or 1, etc...")
    in 20..300 -> println("num in range")
    !in 300..400 -> println("num not in range")
    calcNum() -> println("result of fucntion")
    is Int -> println("boolean or type")
    else -> println("default branch")
}

val ans = when(maxSurfaceTempIntK) {
    calcNum() -> calcNum() * 10
    else -> -1
}

println("ans = $ans")

反编译看一下JVM平台下的实现

if (Intrinsics.areEqual(var2, 700)) {
} else if (!Intrinsics.areEqual(var2, 0) && !Intrinsics.areEqual(var2, 1) && !Intrinsics.areEqual(var2, 2)) {
   byte var5 = 20;
   if (CollectionsKt.contains((Iterable)(new IntRange(var5, 300)), var2)) {
   } else {
      short var6 = 300;
      if (!CollectionsKt.contains((Iterable)(new IntRange(var6, 400)), var2)) {
      } else if (Intrinsics.areEqual(var2, ((Practice)this).calcNum())) {
      } else if (var2 instanceof Integer) {
      } else {
      }
   }
} else {
   var3 = "Equal 0, or 1, etc...";
   System.out.println(var3);
}

var2 = ((Practice)this).maxSurfaceTempIntK;
this.ans = Intrinsics.areEqual(var2, ((Practice)this).calcNum()) ? ((Practice)this).calcNum() * 10 : -1;
  • when表达式没有使用Java switch的语法糖,转换为嵌套if…elseif…else的语法。

  • 在判断是否为1,2,3的时候,编译器做了if !else 的操作。

  • 带返回值的when, 会被转换为Java三目表达式。

详解一典型的反激式开关电源方案 如图,在某系统方案上看到下图所示的单端反激式开关电源方案。 阅读详情

相关推荐

无感健康监测的未来:毫米波雷达如何重新定义睡眠科技与居家养老

毫米波雷达技术正重新定义无感健康监测,特别是在睡眠科技与居家养老领域。通过精准监测呼吸、心率和体动,无需穿戴设备即可实现临床级精度。结合合宙Air700E开发板,构建了完整的远程看护解决方案,为老年人提供跌倒检测、异常报警等安全保障,同时保护用户隐私。

cake8的博客 566

Kotlin手记-(6)if和when条件表达式

if条件语句 Kotlin 提供了几种实现条件逻辑的机制,其中最常见的是 if-else 语句。如果 if 关键字后面括在圆括号内的表达式求值为 true,则会执行该分支中的代码(即,紧跟在后面的括在大括号内的代码)。否则,会执行 else 分支中的代码 if (x == 2) { println("x等于2") } else { println("x不等于2") } 在 Kotlin 中,if是一个表达式,即它会返回一个值。 因此就不需要三元运算符(条

amigos_pop的专栏 1078

SQL实现数据仓库ETL:分层设计、增量抽取与性能优化实践

在数据仓库建设过程中,ETL(抽取、转换、加载)是数据流转的核心环节。传统观点常将ETL与专业工具或大数据框架绑定,但在中小规模数据场景下,基于SQL的ETL方案凭借低门槛、高可维护性和直观的排错体验,成为高效且务实的选择。本文从ETL的基础概念出发,阐述数据仓库分层(ODS、DWD、DWS、ADS)中每层ETL的定位与职责,重点剖析增量抽取策略(时间戳、主键、日志)下的SQL实现方式,以及数据清洗、去重和格式化的常见写法。同时,结合真实项目经验,分享慢SQL优化技巧、任务调度依赖设计、幂等性保障和常见问题

weixin_33290540的博客 345

Kotlin 控制流程

每一个分支可以是一个代码块,它的值是块中最后的表达式的值。分支,除非编译器能够检测出所有的可能情况都已经覆盖了。所有这些表达式都可以用作更大表达式的一部分,类型是。, 第一个符合条件的分支的值就是整个表达式的值;可以循环遍历任何提供了迭代器的对象。, 则忽略个别分支的值;是一个表达式,它会返回一个值;表达式 表达式 表达式,

cyclelucky的博客 496

UE5实战:如何用Georeference插件搞定百度地图坐标转换(附完整代码)

本文详细解析了在UE5中使用Georeference插件实现百度地图坐标转换的全流程,包括BD-09到UE内部坐标的转换算法、UTM投影配置及性能优化技巧。通过完整代码示例和实战案例,帮助开发者高效解决数字孪生项目中的地理坐标转换难题。

weixin_30955617的博客 94

华为使用MicroG安装并使用Google服务教程

鉴于众多华为手机用户因无法使用Google服务而感到不便,我经过多次摸索和测试,总结了一份简单易懂的教程,希望能够帮助到大家。无论是需要使用Google Play商店下载应用,还是需要使用Google服务进行工作和学习,本文将详细介绍如何在华为手机上安装并使用Google服务。二、前置条件软件要求:Aurora Store(替代Google Play商店)、MicroG Companion、MicroG Server(替代Google框架)

weixin_41926602的博客 3万+

kotlin 的 when 语句学习笔记

kotlin 中 when 的基本使用方法 kotlin 中的 when 的基本使用方法与 Java 中的 switch 类似。 下面分别是用 Java 的 switch 和 kotlin 的 when 实现同一逻辑的代码。 // Java 代码 switch(x){ case 1: System.out.println("x is 1"); break; case 2: System.out.println("x is 2"); break; case 3: System.out.p

FREE_CODER 4734

【PCIe硬件】PCIe引脚PRSNT与热插拔

热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。事实上,PCIe“热插拔”的关键目的就是为前面面所提到的系统RAS服务的,是提升系统RAS能力的非常重要的手段!注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的“热插拔”。这里的Hot-Plug,为了方便,我们叫做PCIe热插拔,也就是我们现在及后面将要讨论的内容。

smartvxworks的博客 2803

kotlin之when表达式

有java基础的同学知道switch case语句 如果用kotlin来实现,该怎么实现类似的业务呢?when 将它的参数和所有的分支条件顺序比较,直到某个分支满足条件。 发现kotlin的when 和java的 switch....case 差不多但是也存在不同,毕竟kotlin说是综合了很多的语言的优点而应运而生的 java的switch是没有办法直接返回值的,只能是case...或者default给switch外面的变量赋值 而kotlin 发现kotlin的when是不是更好用

qq_14926283的博客 6198

Vue3 - 详细实现将多个文件批量导出为ZIP压缩包格式并下载功能,vue3将文件批量下载打包成ZIP下载保存本地,下载多个文件打包输出成zip格式(支持二进制文件流/base64图片/文件URL)

vue3,nuxt3,vue3批量导出文件打包成压缩包,Vue3中如何批量导出文件(图片/PDF)并打包压缩成ZIP,实现多张图片导出zip文件,vue3导出pdf文件很多如何变成导出一个zip文件,jszip插件文档流,vue3中下载多个文件打包为一个zip,Vue3中将文件批量下载打包成zip格式,批量下载图片并打包成压缩包,vue3导出多个pdf或excel打包成zip压缩包进行下载,批量下载文件并打压缩包,vue3中如何批量下载文件并生成zip格式文件,文件通过服务端接口返回二进制文件流如何处理,文

🏆 前端领域优质创作者 1万+

【DRAM存储器六十六】DDR5介绍--训练相关之CA/CS Training

详述DDR5 CA/CS training过程细节

highman110的博客 195

Kotlin中的When表达式:灵活、强大且直观的条件控制工具

Kotlin中的When表达式:灵活、强大且直观的条件控制工具

一起coding,一起嗨。 3992

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Kotlin 全面学习之路 (二) -- 控制流(If、When、For、While)

Kotlin 学习之路二 – 控制流和跳转返回

Strange_Monkey的博客 432

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[kotlin] 从Java到Kotlin:掌握基础语法差异的跃迁指南

本文系统梳理了Kotlin与Java在基础语法上的核心差异,帮助有Java基础的开发者快速掌握Kotlin。主要对比点包括:1)变量声明方面,Kotlin通过val/var关键字和空安全设计提升了代码安全性;2)函数定义上,Kotlin支持顶层函数、单表达式函数和默认参数等更灵活的表达方式;3)流程控制中,Kotlin的when表达式和范围循环提供了更强大的功能。文章通过大量代码示例展示了Kotlin如何用更简洁的语法实现Java同等功能,体现了其"更安全、更简洁"的设计哲学。

2301_77946674的博客 1144

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Kotlin 习题集 · 基础篇

定义一个函数greet,接受String类型的name参数,返回。name!// 单表达式函数可以简写name!

每一件自己觉得值得的事都要不留余力的去做 564

Kotlin基础知识学习笔记

Kolin的基础用法,持续更新中

weixin_45756537的博客 1160

Kotlin 语言 知识点整理1【个人用】

Kotlin作为JetBrains开发的现代化语言,以其简洁、安全和高效特性成为Java的理想替代。它与Java完全互操作,共享JVM平台和生态系统,但通过空安全机制、扩展函数、数据类等特性大幅减少样板代码。核心优势包括:1)强制空安全设计杜绝NPE;2)支持函数式编程和Lambda表达式;3)协程简化异步编程;4)扩展函数增强代码组织。Java开发者应重点掌握空安全处理、集合操作、作用域函数及协程应用,通过IDE转换工具和Kotlin标准库快速上手。渐进式迁移策略和"以Kotlin方式思考&qu

indeedes的博客 260

Kotlin关键字与操作符(2)

找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。多练。(视频优势是互动感强,容易集中注意力)你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

2401_84413032的博客 647

Kotlin 语言 知识点整理2【个人用】

本文摘要:Kotlin基础语法与特性详解 本文系统介绍了Kotlin编程语言的核心概念与特性。主要内容包括: 基本概念:包定义、程序入口点、变量声明与类型推断 基本类型:数字(整数/浮点)、布尔、字符、字符串的详细处理方式,包括类型转换、运算规则和性能优化 控制语句:增强版的if/when条件表达式、多种循环遍历方式(范围/集合/Map)及流程控制 函数特性:函数定义、扩展函数机制、高阶函数(函数作为参数/返回值) 空安全机制:问号操作符、安全调用、Elvis操作符等特性,有效预防空指针异常 Kotlin通

indeedes的博客 287

Kotlin 知识梳理(1) Kotlin 基础

一、本文概要 本文是对<<Kotlin in Action>>的学习笔记,如果需要运行相应的代码可以访问在线环境 try.kotlinlang.org,这部分的思维导图为: 二、函数和变量 2.1 函数 2.1.1 函数的基本构成 在Kotlin中,函数的基本结构由四个部分构成: 函数名称 参数列表 返回类型 函数体 函数的声明以关键字 fun 开始,函数名称 紧随其...

weixin_33921089的博客 121
上一篇: Tell all the Android application components(简述Android应用组件).
下一篇: 梳理学习Kotlin,For Loops的用法
PirateBrook
博客等级 码龄11年 90粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值