kotlin 中的枚举类和 “when”

作者: shenshizhong | 来源:发表于2017-09-14 01:21 被阅读347次

    文章目录

    • 场景
    • 枚举类
    • when
    • 总结

    场景

    java 中的枚举类还有 switch 结构跟 kotlin 中的有什么不同,怎么更好更快的学习它们

    枚举类

    • kotlin 枚举类的结构: enum + class + 类名
    • kotlin 是默认可见性,所以 public 可以省略
    • 注意:enum 在 kotlin 中,只有在 class 前面才是有特殊意义的(表示枚举)。

    看下面 java 与kotlin 的对比

    //java
    public enum Colors {
        RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
    }
    
    //kotlin
    enum class Colors{
        RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
    }
    

    when

    • 在 kotlin 中使用 when 取代 java 中的 switch 结构
    • 可以使用 lambda 表达式,简化代码
    //java
    package javas;
    
    public class SwitchEnums {
        public static void main(String[] args){
            SwitchEnums switchEnums = new SwitchEnums();
            String chinese = switchEnums.getChinese(Colors.GREEN);
            System.out.println(chinese);
    
        }
        public String getChinese(Colors color){
            String strColor =null;
            switch(color){
                case RED:
                    strColor = "红";
                    break;
                case ORANGE:
                    strColor = "橙";
                    break;
                case YELLOW:
                    strColor = "黄";
                    break;
                case GREEN:
                    strColor = "绿";
                    break;
                case BLUE:
                    strColor = "蓝";
                    break;
                case INDIGO:
                    strColor = "靛";
                    break;
                case VIOLET:
                    strColor = "紫";
                    break;
                default:
            }
            return strColor;
        }
    }
    
    
    //kotlin
    package kotlins
    
    enum class Colors{
        RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
    }
    
    fun getChinese(color: Colors) =
            when(color){  //when 是一个有返回值的表达式,因此可以返回 when 表达式的 表达式函数
                Colors.RED -> "红"  //颜色和枚举常量相等,返回对应的字符串
                Colors.ORANGE -> "橙"
                Colors.YELLOW -> "黄"
                Colors.GREEN -> "绿"
                Colors.BLUE -> "蓝"
                Colors.INDIGO -> "靛"
                Colors.VIOLET -> "紫"
            }
    
    fun main(args: Array<String>){
        println(getChinese(Colors.GREEN))
    }
    

    总结

    • kotlin 枚举类和 when 还是很容易掌握的
    • 比较中发现 kotlin 看起来简化好多代码,看起来更直观
    • 我们可以通过与熟悉的语言进行对比,更好更快的学习另外一门语言

    如果对你有一点点帮助,请点个赞,你的鼓励就是我写作的动力。谢谢!
    欢迎长按下图 -> 识别图中二维码 或者 扫一扫 关注我的公众号:

    shenshizhong.png

    我的csdn:http://blog.csdn.net/shenshizhong
    我的简书:http://www.jianshu.com/u/345daf0211ad

    相关文章

      网友评论

        本文标题:kotlin 中的枚举类和 “when”

        本文链接:https://www.haomeiwen.com/subject/igblsxtx.html