覆盖案例

var maxSurfaceTempIntK: Any = 100fun calcNum() = 600when(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() * 10else -> -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三目表达式。

梳理学习Kotlin,when表达式的用法相关推荐

  1. 梳理学习Kotlin,Function的用法

    示例: main函数 fun main(args: Array<String>) {} 完整函数 fun fib(n: Int): Long {return if (n < 2) 1 ...

  2. 学习Kotlin(五)函数与Lambda表达式

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  3. 学习Kotlin(二)基本语法

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  4. 如何学习kotlin?Kotlin基础知识快速入门

    一 概述 Android 1.5系统中Google 引入了NDK功能,支持使用C和C++语言来进行一些本地化开发. 17年官宣kotlin为安卓一级开发语言:所以对于安卓开发者,学习kotlin是必须 ...

  5. kotlin条件表达式

    2019独角兽企业重金招聘Python工程师标准>>> if 表达式 在 Kotlin 中,if 是带有返回值的表达式.因此Kotlin没有三元运算符(condition ? the ...

  6. 为什么应该学习Kotlin

    Mark Platvoet是一名热衷于研究新的编程语言.技术和方法的Java和.NET开发者.最近,他为JetBrains推出的新语言Kotlin所吸引,并于近日撰文介绍了这门颇具生产力的语言. \\ ...

  7. 学习Kotlin(八)其他技术

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  8. 学习Kotlin(七)反射和注解

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

  9. 学习Kotlin(六)扩展与委托

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

最新文章

  1. Cocostudio 1.6 下载地址
  2. python Demo 01 爬取大学名称
  3. Apache工具包方法——Hex.encodeHexString(byte[] data)源码浅析
  4. 巴斯勒相机外部触发接线_2021新疆欧姆龙相机回收童嫂无欺
  5. 浏览器和node的eventLoop的区别
  6. mysql.5.7 linux_mysql 5.7 linux下的安装
  7. 《中国人工智能学会通讯》——4.40 什么是类人概念学习?
  8. java queue代码_java代码实现顺序队列
  9. 使用FlashCS6制作cocos2d-x动作脚本的思路整理
  10. 不使用80,443,端口,域名还需要备案吗?域名没有备案应该怎么选服务器。
  11. EVE LOM正式官宣杨洋成为品牌代言人
  12. Borland 26年风雨路
  13. 正则表达式语法及常用实例
  14. C#模拟银行转账系统
  15. 3dmax入门教程(三) 初步认识创建面版、基础模型创建 建模
  16. 985博士生盲审未过!学界泰斗喊冤后决定带他去港科大重读博士?
  17. 如何用神经网络预测数据,人工神经网络分析方法
  18. APP界面设计:移动缺省页如何设计才会内容“丰富友好”?
  19. 新的一年,总想说点啥----------------------回家篇
  20. B6(B6AC)充电器中文简要说明书

热门文章

  1. java wasm_Wasm介绍之2:指令集和栈
  2. BI 可视化工具不只有视图,还有报表
  3. java.lang.SecurityException: Not allowed to change Do Not Disturb state - 免打扰模式异常
  4. 最简单的Word公式编号方法
  5. C#语言实例源码系列-实现ComboBox变色
  6. manjaro文件不是一个有效的图表主题_Manjaro安装套路
  7. WebStorm调试javaScript
  8. Creator打包oppo rpk小游戏黑屏问题
  9. Win10+GTX1050Ti安装CUDA和cuDNN的记录
  10. 自考计算机网络工程本科考哪些科,自考网络工程本科考试科目有哪些