浅谈Kotlin(四):控制流
浅谈Kotlin(一):简介及Android Studio中配置
本篇介绍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(四):控制流的更多相关文章
- 浅谈Kotlin(三):类
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 已经学习了前 ...
- 浅谈Kotlin(二):基本类型、基本语法、代码风格
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 通过上面的文章,在A ...
- 浅谈Kotlin(一):简介及Android Studio中配置
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...
- 浅谈Kotlin中的函数
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/UV23Uw_969oVhiOdo4ZKAw作者:连凌能 Kotlin,已经被Android官方 ...
- Salesforce Consumer Goods Cloud 浅谈篇四之店内拜访的创建和执行
本篇参考: https://v.qq.com/x/page/f0772toebhd.html https://v.qq.com/x/page/e0772tsmtek.html https://v.qq ...
- 浅谈Spring(四)
一.Spring+MyBatis整合 spring大大简化了Mybatis的开发步骤. 1.MyBatis的开发要点: mybatis-config.xml配置文件:配置与数据库的链接.mapper文 ...
- 浅谈Struts2(四)
一.Struts2的拦截器(Intercept) 作用:把多个Action中的共有代码,提取至拦截器,从而减少Action中的冗余代码. 1.Action拦截器 a.编写interceptor类 pu ...
- 浅谈DevExpress<四>:TreeList中的拖拽功能
本篇要实现的目标,简单来说就是把一个treelist的节点用鼠标拖到另外的节点(自身或其他的listview)上,如下图: 1
- 安卓开发_浅谈Android动画(四)
Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1. ValueAnimator 基本属 ...
随机推荐
- 机器学习(Machine Learning)算法总结-K临近算法
一.算法详解 1.什么是K临近算法 Cover 和 Hart在1968年提出了最初的临近算法 属于分类(classification)算法 邻近算法,或者说K最近邻(kNN,k-NearestNeig ...
- CentOS 7的安装详解
不多说,直接上干货! CentOS 6.5的安装详解 主流: 目前的Linux操作系统主要应用于生产环境, 主流企业级Linux系统仍旧是RedHat或者CentOS. 免费: RedHat 和Ce ...
- 不得不提的volatile及指令重排序(happen-before)
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- 动车上的书摘-java网络 连接服务器
摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 应该有些延迟,你会看到黑幕中弹出 来自USA的X原子的计量时间: ...
- 解决 VS2017 打断点无效
打断点无效 断点显示白色,鼠标移上去,提示:The breakpoint will not currently be hit. No Symbols have been loaded for this ...
- 从前端界面开发谈微信小程序体验
本文由云+社区发表 作者介绍:练小习,2011年加入搜狐,负责搜狐相册的产品策划与前端开发.2015年后加入腾讯 ISUX (社交用户体验设计部),目前主要负责腾讯云的UI开发工作,专注于人机交互,有 ...
- Ubuntu环境下mysql常见的操作
1 启动mysql服务:Service mysql start 再次启动:service mysql restart 停止mysql服务:service mysql stop 确定mysql是否 ...
- tomcat和nginx配置java服务器
tomcat和nginx配置java服务器 环境配置 服务器配置 写了这么久的SSM,做了一个简单的网站[没有加入数据库],然后就要开始部署javaWEB的云服务器了.本次搭建使用的Tomcat和n ...
- Android AIDL 实例
为使应用程序之间能够彼此通信,Android提供了IPC (Inter Process Communication,进程间通信)的一种独特实现: AIDL (Android Interface Def ...
- Mybatis的SqlSession运行原理
前言 SqlSession是Mybatis最重要的构建之一,可以简单的认为Mybatis一系列的配置目的是生成类似 JDBC生成的Connection对象的SqlSession对象,这样才能与数据库开 ...