java中的switch被kotlin中的when取代。
我们都知道,java中的switch有非常多不好用的地方,例如只能使用于原始类型和字符串,经常会忘写break导致bug….总之我都是尽量不用switch,而用if elseif的。不过在kotlin中,这些问题都得到了很好的解决,我们看看when是怎么起作用的。
1.首先when是一个表达式,而不像java里的switch是一个单纯的执行顺序控制,when会返回对应的值,同时我们之前也说过,如果方法只有一条表达式,那么可以不用写 return,所以这个方法就是返回color对应的字符串
2.kotlin里的when操作的对象可以是任意对象,而不用限制在原始类型中。
3.kotlin里不用写break,每个分支都会自动插入break
如果想要多个值对应到一个结果,可以这样写
之前说过when可以作用于任意对象类型,我们再来看看这个特性有多大的好处吧
1.setOf是kotlin的一个全局方法,返回一个set对象,所以when进行比较的是set对象,又因为set对象是没有顺序的数据结构,所以在kotlin中,只要两个set包含的元素相等,则两个set相等。
2.set之间进行比较
3.else相当于java中的default块
从上图可以看到,如果java需要进行这种比较,估计需要多写一倍的代码,但是kotlin通过一个功能强大的when以及其他一些语法糖能够快速写出一个可读性强,又精简的代码块。