大佬教程收集整理的这篇文章主要介绍了Kotlin的枚举与异常示例详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一、kotlin中枚举的定义
枚举需要用到两个关键字 enum class,譬如这样
enum class Color(val r: Int,val g: Int,val b: int){ //彩虹色也是一个典故:韦克菲尔德战役 RED(255,0),ORANGE(255,165,YELLOW(255,255,GREEN(0,BLUE(0,255),INDIGO(75,130),VIOLET(238,130,238); fun rgb() = (r * 255 + g) * 256 + b }
fun main() { println("RED's RGB value is ${Color.RED.rgb()}")
二、枚举和when的结合
初步使用
//枚举和when的配合使用 fun getMnemonic(color: Color): String{ //when配合枚举使用 return when(color){ Color.RED -> "Richard" Color.oRANGE -> "Of" Color.YELLOW -> "York" Color.GREEN -> "Gave" Color.bLUE -> "Battle" Color.INDIGO -> "In" Color.VIOLET -> "Vain!" } }
如果多个case的结果是一样的,可以通过逗号连接,譬如
//when的多个case同一个结果的方式 fun getWarmth(color: Color) = when(color){ Color.RED,Color.oRANGE,Color.YELLOW -> "warm" Color.GREEN -> "neutral" Color.bLUE,Color.INDIGO,Color.VIOLET -> "cold" }
遇到有case之外其他情况,使用else。用when代替if
fun mix(c1: Color,c2: Color) = when(setOf(c1,c2)){ setOf(Color.RED,Color.YELLOW) -> Color.oRANGE else -> throw Exception("Dirty Color") }
使用不带参数的when
fun mixOptimized(c1: Color,c2: Color) = when{ (c1 == Color.RED&& c2 == Color.YELLOW || c2 == Color.RED&& c1 == Color.YELLOW) -> Color.oRANGE else -> throw Exception("Dirty Color") }
setOf是将元素加入到Set集合中
when中可通过is判断类型
fun eval(e: Expr): Int = when(E){ is Num -> e.value is Sum -> eval(e.right) + eval(e.left) else -> throw IllegalArgumentexception("UnkNown expression") }
when中使用in检查范围
fun recognize(c: Char) = when(C){ in '0'..'9' -> "It's a digit!" in 'a'..'z',in 'A'..'Z' -> "It's a letter" else -> "I don't kNow what it is." }
三、Kotlin中的异常
kotlin中不区分受检异常和
受检异常有个弊端就是:很多时候的异常我们是不需要捕捉的,因为捕捉了也没法处理。
比如BufferReader.close可能会抛出IOException异常,但很多程序对这个异常都不会采取有意义的行动,所以对这个异常的捕获所写的代码就是冗余的代码
当然,它的使用和Java基本一样,try-catch或try-catch-finally块
//将读取到的字符串类型转化成Int类型 fun readnumber(reader: BufferedReader): Int?{ try { val line = reader.readLine() return Integer.parseInt(linE) }catch (e: numberFormatException){ return null }finally { reader.close() } }
其实KoTin中的try关键字也是表达式,所以也可以这么写:
fun readnumber2(reader: BufferedReader){ val number = try { val line = reader.readLine() Integer.parseInt(linE) }catch (e: numberFormatException) { return } println(number) }
总结
学习Kotlin不仅仅是在学习一种新语言,更是在学习改变习惯思考方式的过程
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
以上是大佬教程为你收集整理的Kotlin的枚举与异常示例详解全部内容,希望文章能够帮你解决Kotlin的枚举与异常示例详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。