浅谈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 基本属 ...
随机推荐
- git小技巧
1 git提交时如何忽略一些文件: 在git根目录下添加,然后提交,就可以使用了,详细的语法详见 https://github.com/github/gitignore github提供了一个通用的. ...
- AI - Tips
01- Playground http://playground.tensorflow.org TensorFlow的网页工具Playground提供了几种简单类型的data,可以调节网络结构.学习率 ...
- HTML5拍照、摄像机功能实战
HTML5拍照.摄像机功能实战 苏格团队 作者:Tomey 开篇 最近在做一个chrome app的云相机应用,应用包括拍照.摄像.保存照片视频.上传文件等等核心功能,其中涉及到很多HTML5对媒体流 ...
- Android--UI之ImageSwitcher
前言 这篇博客来聊一聊AndroidUI开发中ImageSwitcher控件的使用.ImageSwitcher控件与ImageView类似,都可以用于显示图片,但是ImageSwitcher通过名字可 ...
- Java 容器 & 泛型:六、容器讲到为什么要使用泛型
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket ArrayList是集合类中无处不在的,泛型也是,泛型对集合类尤其有用.但是为啥要使用泛型?理解好了这 ...
- Android UI(二)DridView的菜单
Jeff Lee blog: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks ...
- MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录
Mongodb是一种非关系数据库(NoSQL),非关系型数据库的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模 ...
- Session提要
Session即会话,批一种持续性的.双向的链接.Sesstion和Cookie本质上没有什么区别,都是针对HTTP协议的局限性而提出的一种保持客户端和服务器间保持会话连接状态的机制. S ...
- PHP中的加强型接口Traits
接口是对多重继承的一种变相实现, Traits可以被视为一种加强型的接口. 先来看如下代码 trait Hello { private $name = 'chenqionghe'; public ...
- TensorFlow中的设备管理——Device的创建与注册机制
背景 [作者:DeepLearningStack,阿里巴巴算法工程师,开源TensorFlow Contributor] 作为一款优秀的异构深度学习算法框架,TensorFlow可以在多种设备上运行算 ...