首页 > 其他分享 >Android-Kotlin-When&类型推断

Android-Kotlin-When&类型推断

时间:2023-06-22 14:35:51浏览次数:32  
标签:变量 Kotlin when When var 类型 println Android 赋值


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还有其他用法,暂未发现
    // ....
}

执行结果:

Android-Kotlin-When&类型推断_Kotlin




类型推断

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

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

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

Android-Kotlin-When&类型推断_Kotlin_02

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
    // ...... 
}


标签:变量,Kotlin,when,When,var,类型,println,Android,赋值
From: https://blog.51cto.com/u_16163510/6534861

相关文章

  • Android-kotlin的继承
    上一篇博客讲了Android-kotlin的配置/入门,然后简单的实现了一个计算器功能。今天我们来讲讲kotlin中的继承是怎样的。1.先看一个案例,子类使用到父类的资源【案例一】父类张翠山:packagecn.kotlin.kotlin_oop03/***描述父对象:张翠山**personDescribe此人的简介/var......
  • Android-kotlin-具名参数
    先看一个这样的案例,【案例一】:packagecn.kotlin.kotlin_base05funshowAction1(country:String,volk:String){println("我的祖国是${country},我的民族是$volk")}funshowAction2(country:String,volk:String){println("我的祖国是${country},我的民族是......
  • 万事俱备面饿了么Android!面完哭了呜呜呜,还是美团香!
    大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助。最近跟一个朋友聊天,他漫不经心地复习了几个月,就去参加了饿了么面试,第二面结束后,嗯,挂了…当天怒清购物车,卸载饿死了么。下面是他回忆整理的凉经:一面(全都会)1.点击图标,应用打......
  • Android-Kotlin-区间与FOR&LIST&MAP简单使用
    区间与for:packagecn.kotlin.kotlin_base04/***区间与for*/funmain(args:Array<String>){/***Kotlin中提供了区间,例如:存入1到100,在Java中可能要写多行代码,而在Kotlin中很简单,代码如下*1..100*/varnumbers=1..100/***......
  • Android-Kotlin-递归与尾递归
    递归:阶乘计算:/***阶乘:*1的阶乘是1,因为1往下走一个楼梯就是0了*2的阶乘是2*1*3的继承是3*2*1*4的继承是4*3*2*1*5的阶乘是5*4*2*1*/packagecn.kotlin.kotlin_base06......
  • Android-引导用户指纹录入
    根据不同的手机,跳转到指纹录入界面,如果没有检测到手机的品牌,就提醒用户手动去指纹录入:首先描述手机信息检测对象,PhoneInfoCheck.java:packagecom.esandinfo;importandroid.app.AlertDialog;importandroid.content.ComponentName;importandroid.content.Context;importandr......
  • Android—MySQLiteOpenHelper源码解读
    MySQLiteOpenHelper:直接放上源码,解读在注释里packagecom.esandinfo;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroid.util.Log;publicclassMySQLiteOpenHelperextends......
  • 腾讯Android岗三面:EventBus 发送的消息,如何做到线程切换?
    一.前言EventBus是一个基于观察者模式的事件订阅/发布框架,利用EventBus可以在不同模块之间,实现低耦合的消息通信。EventBus因为其使用简单且稳定,被广泛应用在一些生产项目中。通常我们就是使用EventBus分发一些消息给消息的订阅者,除此之外我们还可以通过EventBus将消息传......
  • Android:教你如何避免解决WebView内存泄漏
    一直听说WebView使用不当容易造成内存泄漏,网上有很多针对内存泄漏的解决方案,比较多的是在Activity.onDestroy的时候将WebView从View树中移除,然后再调用WebView.destroy方法:overridefunonDestroy(){valparent=webView?.parentif(parentisViewGroup){......
  • 【建议私藏】Android进阶开发面试必背300题,都在这里了~
    Android的技术面试的本质与考试无差,许多知识点你可能之前没有涉及,之后也不会用到,但面试官提问时,你一定得会。如果你只是精专于之前业务中的内容,那无疑所掌握的知识点会非常会非常片面,也会极大的限制你的发展性,减少你可选择的选项。Android开发面试必问经典题目Handler相关知识,面试......