zoukankan      html  css  js  c++  java
  • Android-Kotlin-when&类型推断

    Kotlin的when表达式

    TextEngine 描述文字处理对象:

    package cn.kotlin.kotlin_base02
    
    /**
     * 描述文字处理对象
     *
     * val textContent 传入进来的文字内容 val是常量
     */
    class TextEngine(val textContent: String) {
    
        /**
         * 处理文字,然后返回
         * 返回完整的字符串
         */
        fun getDoTextAction() : String {
            return """
                   我来到一个非常美丽的公园,走着走着,就看到了${textContent}这个牌坊,这个牌坊中的${getTextContentCount(textContent)}个字是用漂亮的笔画写的
                   """
        }
    
        /**
         * 把存入进来的textContent,转换成几个字
         * 返回字符串
         */
        private fun getTextContentCount(textContent: String): String {
            var result = when(textContent.length) {
                1 -> "一"
                2 -> "二"
                3 -> "三"
                4 -> "四"
                5 -> "五"
                6 -> "六"
                else -> {
                    "" + textContent.length
                }
            }
            return result
        }
    
    }

    main测试方法:

    package cn.kotlin.kotlin_base02
    
    fun main(args: Array<String>) {
    
        var textEngine = TextEngine("皇后工天下")
        println(textEngine.getDoTextAction())
    
        var textEngine2 = TextEngine("风云帝王")
        println(textEngine2.getDoTextAction())
    
        var textEngine3 = TextEngine("阿巴黎大会公园")
        println(textEngine3.getDoTextAction())
    
        println("------------------------------------------------------")
    
        // -------------- when 的第一种用法
        when(130.88) {
            143.98 -> println("体重比较合格...")
            130.88 -> println("体重中规中矩....")
            100.32 -> println("体重轻了,太瘦了...")
            else -> println("体重数据未知...")
        }
    
        println("------------------------------------------------------")
    
        // -------------- when 的第二种用法
        when(3) {
            1 -> {
                println("我有三个人在给我干活....")
            }
            2 -> {
                println("我看到2个人在看电影...")
            }
            3 -> {
                println("三人行必有我吸烟....")
            }
            else -> println("没有人给我干活...")
        }
    
        println("------------------------------------------------------")
    
        // -------------- when 的第三种用法
        var perosnCount = 30
        var whenResult = when(perosnCount) {
            10 -> "这个工作室${perosnCount}个人"
            20 -> "这个工作室${perosnCount}个人"
            30 -> "这个工作室${perosnCount}个人"
            40 -> "这个工作室${perosnCount}个人"
            else -> "这个工作室 N个人在努力工作...."
        }
        println(whenResult)
    
        // when还有其他用法,暂未发现
        // ....
    }

    执行结果:




    类型推断

    类型推断是Kotlin内部自动处理的:

    类型推断(注意:类型推断 变量和常量是一样的,只要是第一次赋值,就内部就认为第一次的类型变量类型)

    定义一个常量/变量,赋值为字符串类型,Kotlin内部就已经认为此常量/变量是字符串类型了

    package cn.kotlin.kotlin_base02
    
    /**
     * 类型推断(注意:类型推断 变量和常量是一样的,只要是第一次赋值,就内部就认为第一此的类型变量类型)
     */
    fun main(args: Array<String>) {
    
        /**
         * 定义一个常量,赋值为字符串类型,Kotlin内部就已经认为此aVal常量是字符串类型了
         */
        val aVal = "AAAAAAA"
    
        /**
         * 定义一个变量,赋值为字符串类型,Kotlin内部就已经认为此aVar变量是字符串类型了
         */
        var aVar = "ABCDEFT"
    
        // 在给aVar赋值为99,会报错,因为aVar已经是字符串类型了
        // aVar = 99
    
    
        /**
         * 定义一个变量,赋值为整形类型,Kotlin内部就已经认为此bVar变量是整形类型了
         */
        var bVar = 1000
    
        // 在给bVar赋值为ABCD,会报错,因为bVar已经是整形类型了
        // bVar = "ABCD"
    
    
        /**
         * 定义一个变量,赋值为浮点型类型,Kotlin内部就已经认为此cVar变量是浮点型类型了
         */
        var cVar = 988.22
    
        // 在给cVar赋值为100,会报错,因为cVar已经是浮点型类型了
        // cVar = 100
    
    
        // -----------------------
        /**
         * 以上没有指定变量类型,内部通过第一次赋值来决定类型的
         * 而以下代码是,指定变量类型
         */
        var zVar : String = "ABCDEF"
        var z2Var : Int = 10000
        var z3Var : Double = 564.45
        var z4Var : Float = 1000.37f
        // ...... 
    }
  • 相关阅读:
    蝴蝶自在——《萍踪侠影》
    学习OpenCV——关于三通道的CvMat的求和问题
    MFC中的OnTimer和SetTimer
    慎重选择博士后(或博士生)导师
    MFC界面的完善
    MFC CSplitterWnd的用法
    断言(ASSERT)的用法
    OpenCV中lib的添加
    【转】数据结构之位图
    【转】关于windows server 2003不能共享问题
  • 原文地址:https://www.cnblogs.com/android-deli/p/10317495.html
Copyright © 2011-2022 走看看