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

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

浅谈Kotlin(三):类

浅谈Kotlin(四):控制流

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

一、if 语句

  1、基本用法:

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

    

  2、判断结果赋值

var a = ;
var b = ;
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 = ;
do {
a++;
Log.i("xqxinfo", "a自增一,当前值:" + a)
}while (a<) 打印结果:

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 = ;
when(a){
, -> {
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
}

  

浅谈Kotlin(四):控制流的更多相关文章

  1. 浅谈Kotlin(三):类

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 已经学习了前 ...

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

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 通过上面的文章,在A ...

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

    浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...

  4. 浅谈Kotlin中的函数

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/UV23Uw_969oVhiOdo4ZKAw作者:连凌能 Kotlin,已经被Android官方 ...

  5. Salesforce Consumer Goods Cloud 浅谈篇四之店内拜访的创建和执行

    本篇参考: https://v.qq.com/x/page/f0772toebhd.html https://v.qq.com/x/page/e0772tsmtek.html https://v.qq ...

  6. 浅谈Spring(四)

    一.Spring+MyBatis整合 spring大大简化了Mybatis的开发步骤. 1.MyBatis的开发要点: mybatis-config.xml配置文件:配置与数据库的链接.mapper文 ...

  7. 浅谈Struts2(四)

    一.Struts2的拦截器(Intercept) 作用:把多个Action中的共有代码,提取至拦截器,从而减少Action中的冗余代码. 1.Action拦截器 a.编写interceptor类 pu ...

  8. 浅谈DevExpress<四>:TreeList中的拖拽功能

    本篇要实现的目标,简单来说就是把一个treelist的节点用鼠标拖到另外的节点(自身或其他的listview)上,如下图: 1 

  9. 安卓开发_浅谈Android动画(四)

    Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1.  ValueAnimator 基本属 ...

随机推荐

  1. Metrics.NET源码阅读笔记

    概述 Metrics.NET提供的是度量工具,他是移植自Java的metrics.Metrics将度量抽象成Gauges,Counters,Histograms,Meters,Timers五种.基于这 ...

  2. 解决Python中PyCharm导入模块时,模块名下出现红色波浪线的问题

    在博主第一次在PyCharm中导入模块时,模块名下出现红色波浪线,不影响程序执行,但强迫症忍不了 以下是解决办法 Let's do it ... 进入设置,找到Console下的Python Cons ...

  3. jQuery源码——.html()方法原理解析

    在将字符串转化为html碎片时,一般会将字符串作为容器的innerHTML属性赋值.但innerHTML有很多局限性,比如我们想转化的字符串中有<script>标签并且包含一个立即执行的函 ...

  4. 【EF6学习笔记】(八)更新关联数据

    上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考虑对于有关联的数据进行新增.删除.更新操作:比如Course .Instructor: ...

  5. MongoDB分片详解

    分片是MongoDB的扩展方式,通过分片能够增加更多的机器来用对不断增加的负载和数据,还不影响应用. 1.分片简介    分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不 ...

  6. MySQL 通讯协议

    Client/Server 通讯协议用于客户端链接.代理.主备复制等,支持 SSL.压缩,在链接阶段进行认证,在执行命令时可以支持 Prepared Statements 以及 Stored Proc ...

  7. 数据结构(一) 单链表的实现-JAVA

    数据结构还是很重要的,就算不是那种很牛逼的,但起码得知道基础的东西,这一系列就算是复习一下以前学过的数据结构和填补自己在这一块的知识的空缺.加油.珍惜校园中自由学习的时光.按照链表.栈.队列.排序.数 ...

  8. leetcode — n-queens

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...

  9. LINUX服务器搭建和常用配置介绍

    服务器搭建 : 搭建私有CA服务器 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_011_ca.html搭建samba服务器 : h ...

  10. Http系列目录

    1.Http简史 2.Http协议基本术语 3.Http1.1 4.Http2.0