浅谈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 基本属 ...
随机推荐
- 机器学习入门 - Google的机器学习速成课程
1 - MLCC 通过机器学习,可以有效地解读数据的潜在含义,甚至可以改变思考问题的方式,使用统计信息而非逻辑推理来处理问题. Google的机器学习速成课程(MLCC,machine-learnin ...
- StringBuffer 和 StringBuilder 的 3 个区别
StringBuffer 和 StringBuilder 它们都是可变的字符串,不过它们之间的区别是 Java 初中级面试出现几率十分高的一道题.这么简单的一道题,栈长在最近的面试过程中,却经常遇到很 ...
- iOS----KVC和KVO 详解
一. KVC 1.KVC介绍 KVC 就是键值编码(key-value-coding). 2.KVC 的主要作用: (1)通过键值路径为对象的属性赋值.主要是可以为私有的属性赋值. AppleView ...
- Elasticsearch基础教程分享
基础及相关资料 首先我们先了解一下什么是Elastisearch,Elasticsearch(简称es)是一个基于Lucene库的搜索引擎.它提供了一个分布式.支持多租户的全文搜索引擎,具有HTTP ...
- List,泛型和Datatable 的相互转换
public static DataTable ToDataTableTow(IList list) { DataTable result = new DataTable(); ) { Propert ...
- 微信小程序 WXS实现json数据需要做过滤转义(filter)
前言 最近有在做小程序开发,在开发的过程中碰到一点小问题,描述一下先. 本人在职的公司对于后台获取的 json 数据需要做过滤转义的很多,不同的状态码会对应不同的文字,但是在微信小程序中又没有类似 v ...
- Hibernate学习(七)———— hibernate中查询方式详解
序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等 --WH 一.hibernate中的5种 ...
- 从a文件判断是否删除b文件中的行(sed示例)
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html test.xml文件很大,内容结构如下: <?xml v ...
- 关于Android屏幕的参数
屏幕尺寸信息: 级别 对应Drawable dp尺寸 Layout 文件夹 案例 标注 small drawable-ldpi 426x320 dp layout-small 典型 (240x320 ...
- ASP.NET Core 中使用EF Core 将实体映射到数据库表的方法(SQL Server)
前段时间听过一个关于使用ASP.NET Core建立项目的视频.其中使用EF Core映射到数据库的部分是按部就班地学习.今天自己建立项目时,有些步骤已经有一些遗忘.所以写下这篇文章,顺便理清思路. ...