• 浅谈Kotlin(四):控制流


    浅谈Kotlin(一):简介及Android Studio中配置

    浅谈Kotlin(二):基本类型、基本语法、代码风格

    浅谈Kotlin(三):类

    浅谈Kotlin(四):控制流 

    本篇介绍Kotlin的控制流语法(if,for,while,when....)

    一、if 语句

      1、基本用法:

         var a = 10;
            if(a > 5){
                Log.i("xqxinfo","a>5成立")
            }else{
                Log.i("xqxinfo","a>5不成立")
            }
      
         打印日志:xqxinfo: a>5成立

        

      2、判断结果赋值

    var a = 5;
    var b = 10;
    var max = if(a>b) a else b
    Log.i("xqxinfo","最大值max:"+max)

    打印日志:xqxinfo: 最大值max:10


    注意:可以将结果体放在{}中
    var a = 5;
    var b = 10;
    var max = if(a>b) {a} else {b}

    二、for循环

    虽然你在使用了collections的函数操作符之后不会再过多地使用for循环,但是for循 环再一些情况下仍然是很有用的。

    提供一个迭代器它可以作用在任何东西上面:

    for (item in collection) { print(item) }

    如果你需要更多使用index的典型的迭代,我们也可以使用 ranges (反正它通常 是更加智能的解决方案):

    for (index in 0..viewGroup.getChildCount() - 1) { val view = viewGroup.getChildAt(index) view.visibility = View.VISIBLE }

    在我们迭代一个array或者list,一系列的index可以用来获取到指定的对象,所以上 面的方式不是必要的:

    for (i in array.indices) print(array[i])

    三、while循环

      1、while

    var a = 10;
    while (a<15){
    a++;
    Log.i("xqxinfo", "变量a的数值增加1,当前变量a="+a)
    }

    打印结果:

    I/xqxinfo: 变量a的数值增加1,当前变量a=11
    I/xqxinfo: 变量a的数值增加1,当前变量a=12
    I/xqxinfo: 变量a的数值增加1,当前变量a=13
    I/xqxinfo: 变量a的数值增加1,当前变量a=14
    I/xqxinfo: 变量a的数值增加1,当前变量a=15

      2、do-while

    var a = 10;
    do {
         a++;
         Log.i("xqxinfo", "a自增一,当前值:" + a)
    }while (a<15)

    打印结果:

    I/xqxinfo: a自增一,当前值:11
    I/xqxinfo: a自增一,当前值:12
    I/xqxinfo: a自增一,当前值:13
    I/xqxinfo: a自增一,当前值:14
    I/xqxinfo: a自增一,当前值:15

    四、when (效果类似于switch)

    1、基本使用

    when 表达式与Java中的 switch/case 类似,但是要强大得多。

    这个表达式会去 试图匹配所有可能的分支直到找到满意的一项。

    然后它会运行右边的表达式。

    与 Java的 switch/case 不同之处是参数可以是任何类型,并且分支也可以是一个条 件。

    对于默认的选项,我们可以增加一个 else 分支,它会在前面没有任何条件匹配时 再执行。

    var a = 10;

    when(a){
        10 -> { //满足a=10的情况
    Log.i("xqxinfo","执行a=10的情况")
    a = 11
    }
    11-> {
    Log.i("xqxinfo","执行a=11的情况")
    a = 12
    }
    else -> Log.i("xqxinfo","执行a!=10&&a!=11的情况")
    }


    打印结果:
    I/xqxinfo: 执行a=10的情况

      注意:{}括起来满足这个条件的语句,一行写一个代码,不要写在一行里

      2、条件可以是一系列被逗号分割的值。

    var a = 10;
    when(a){
      10,11 -> {
         Log.i("xqxinfo", "a满足10||11");
      }
      else -> Log.i("xqxinfo","执行else")
     }

    打印结果:
    I/xqxinfo: a满足10||11

      

      3、可以检测类型

    when(view) {
        is TextView -> view.setText("I'm a TextView")
        is EditText -> toast("EditText value: ${view.getText()}")
        is ViewGroup -> toast("Number of children:       ${view.getChildCount()} "
        else -> view.visibility = View.GONE
    }

      

  • 相关阅读:
    太白老师 day06 编码 encode decode
    太白老师day6 1.代码块 2.is==id 3.小数据池
    MySQL 基本语法(1.表字段操作,2表记录管理 3.运算符管理4.SQL查询 5.约束6.索引
    List 接口常用子类及其特点
    Java 集合框架
    Java 常用工具类之基本对象包装类
    Java 常用工具类之 String 类
    Java 多线程间通信
    Java 多线程通信之多生产者/多消费者
    Java 之多线程通信(等待/唤醒)
  • 原文地址:https://www.cnblogs.com/xqxacm/p/6963998.html
Copyright © 2020-2023  润新知