Kotlin控制流

Kotlin中的控制流用于流程控制的表达式如if、when、for、while

If表达式

Kotlin中,if是一个表达式,它会返回一个值。它可以用来替代三元运算符(条件?然后:否则)

if

var a = 1
var b = 2
var max = a
if(b > a) max = b
  println(max)             //2

if else

var min: Int
if(a < b){
    min = a
}else{
    min = b
}
println(min)             //1

if作为表达式使用

var max2 = if(a > b) a else b
println(max2)            //2

if的分支可以是代码块,最后的表达式作为返回值

var max3 = if(a > b){
 println("a > b")
 a
}else{
 println("a < b")
 b
}
println(max3)            //2

注意如果if作为表达式则必须有else分支

if的一些习惯用法

//if not null
var str1: String? = "Hello Kotlin!"   //?表示该类型可为null
println(str1?.length)            //当str1变量不为null时访问length属性

//if not null and else
var str2: String? = "str"
println(str2?.length ?: "null")      //当str2变量不为null时访问length属性,否则返回"null"

//if null执行一条语句
var str3: String? = null
str3?:println("str3 is null")       //当str3变量为null时执行

//if not null执行一段代码
var str4: String = "111"
str4?.let {                 //当str4变量不为null时执行{}里面的语句
 println("str4 is not null")
 println("$str4.length is ${str4.length}")
}


when表达式

when表达式取代了switch,最简洁的语法如下

var x = 1
when(x){
 1 -> println("x = 1")
 2 -> println("x = 2")
 else -> println("x is nether 1 or 2")
}

多个匹配值使用同一方式处理

when(x){
 1, 2 -> println("x = 1 or x = 2")
 else -> println("otherwise")
}

进行区间判断

var num = 10
when(num){
    in 1..10 -> println("num is between 1 and 10")
    !in 1..10 -> println("num is not between 1 and 10")
    else -> println("num is out of range")
}

使用when替代if

var a = 1
var b = 2
when{
    a > b -> println(a)
    a < b -> println(b)
}

when作为表达式使用

var str: Any = ""
var type = when(str){
    is Int -> "int"
    is String -> "String"
    else -> "other"
}
println(type)               //String

注意when作为表达式必须有else分支

for循环

for循环可以对任何提供迭代器对象进行遍历,相当于其他语言的foreach

遍历范围

for(i in 1..10){
 println(i)             //1,2,3,4,5,6,7,8,9,10
}

until半开区间,表示不包括10

for(i in 1 until 10){
 println(i)             //1,2,3,4,5,6,7,8,9
}

指定遍历的增长量

for(i in 1..10 step 2){
 println(i)             //1,3,5,7,9
}

遍历数组

var strs: Array<String> = arrayOf("one", "two", "three")
for(str in strs){
    println(str)
}

对数组的 for 循环会被编译为并不创建迭代器的基于索引的循环,如下图为上述代码反编译后的结果

如果想通过索引遍历使用indices

for(i in strs.indices){
    println(strs[i])
}

或者使用withIndex函数

for((index, value) in strs.withIndex()){
    println("the element at $index is $value")
}

在循环中使用break和continue

for(i in 1..10){
    if(i >= 5)
        break            //跳出当前循环

    if(i % 2 != 0)
        continue         //结束本次循环进行下一次循环
    println(i)           //print: 2,4
}

while循环和do while循环

和大多数语言一样这两种循环没什么变化

while循环

var i: Int = 10
while(i > 0){
    println(i)
    i--
}

do while循环

var a: Int = 10
do{
    println(a)
    a--
}while(a > 0)

Kotlin小窝QQ群:250563190,希望和大家一起打造一个Kotlin技术专区

时间: 2024-12-22 20:43:33

Kotlin控制流的相关文章

Kotlin教程学习-控制流

Kotlin的控制流与其他语言一样,顺序,分支,循环 顺序语句就不多说,分支有两种,if-else和when(类似于Java中的switch) if语句: 运行结果: Java中的case语句不仅支持整数值,最新的JVM还支持字符串,Kotlin的when语句更是强大,开关变量甚至可以是Double,Array等各种类型,换句话说when语句比switch语句强大,与if-else语句的能力已经不相上下: 运行结果: while和do-while语句 与Java没有太大区别 运行结果: for循

使用Kotlin对ViewGroup的视图进行函数使操作

原文标题:Functional operations over Views in ViewGroup using Kotlin 原文链接:http://antonioleiva.com/functional-operations-viewgroup-kotlin/ 原文作者:Antonio Leiva(http://antonioleiva.com/about/) 原文发布:2015-07-29 集合.迭代.数组.序列 ... 所有这些共用一套好用的函数,这组函数可帮助对它们的元素进行转换.排序

Kotlin学习之函数

函数声明 在kotlin中用关键字fun声明函数: fun double(x:Int):Int{ } 其中Int是返回值类型,x指明参数类型是为Int 函数用法 通过传统方法调用函数: val result=double(2) 可以通过. 调用成员函数 Sample().foo() Sample()是Sample类的一个实例 Infix符号 当满足如下条件的时候函数被中缀表示法调用: 函数为成员函数或扩展函数 函数只有一个参数 函数用infix关键字标记 //Int的扩展函数 infix fun

Kotlin快速入门(一)基础

Kotlin快速入门(一)基础 Kotlin学习笔记,主要记录与Java不同的地方. 1 基本类型 1.1 数字 1)数字没有隐式扩宽转换 val b: Byte = 1 // OK, 字面值是静态检测的 val i: Int = b // 错误 但我们可以显示转换 val i: Int = b.toInt() 上下文推断转换类型是可以的 val l = 1L + 3 // Long + Int => Long 2)Kotlin中字符不是数字,但字符可以显示转换为数字 fun check(c:

Kotlin开发基础从0开始(一)

为什么学习kotlin kotlin在今年的Google IO 上正式被确认为Android的官方开发语言,想必原因大家也能猜到一二,一是Google与oracle关于Java相关的版权相关的问题,二是kotlin语言很简洁,不罗嗦,支持很多的新特性. 由于Google都已经官方支持了,语法简洁高效,和IOS的 swift 很是相似,发展趋势不可小觑,还有个大新闻就是我们的大神 Jake Wharton 从square 辞职加入了Google,且其在最近的github中国fork了kotlin

Kotlin 1.2 新特性

点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 在Kotlin 1.1中,团队正式发布了JavaScript目标,允许开发者将Kotlin代码编译为JS并在浏览器中运行.在Kotlin 1.2中,团队增加了在JVM和JavaScript之间重用代码的可能性.现在,使用Kotlin编写的代码,可以在所有的应用程序中(包括后端,浏览器前端和Android移动应用程序)中重复使用. 想要体验Kotlin1.2新功能的同学,可以下载官方提供的IntelliJ IDEA 2017.

android手机安全卫士、Kotlin漫画、支付宝动画、沉浸状态栏等源码

Android精选源码 轻量级底部导航栏 android手机卫士源码 android实现高仿今日头条源码 一个用Kotlin写的简单漫画App源码 android吐槽项目完整源码 实现可以滑动文字逐渐变色的TabLayout android实现将app隐藏加密功能的源码 android实现横向滚动的卡片堆叠布局 android仿支付宝的咻咻动画源码 android状态栏和沉浸式导航栏管理源码 Android优质博客 从BaseActivity与BaseFragment的封装谈起 这篇博客主要是从

即刻开始使用Kotlin开发Android的12个原因(KAD 30)

作者:Antonio Leiva 时间:Jul, 11, 2017 原文链接:https://antonioleiva.com/reasons-kotlin-android/ 这组文章已到最后了,它们是非常实用的.今天我想谈谈为什么我认为学习Kotlin是非常有趣的. 虽然, Kotlin现在已是官方支持的开发Android APP的编程语言,而你仍可能觉得没有足够的理由进行改变.在这些年以来,Java已经证明其能力,为什么要改变? 这是我认为转换到Kotlin不是一个冒险的赌注,而是你可以做的

Kotlin的android扩展:对findViewById说再见(KAD 04)

作者:Antonio Leiva 时间:Dec 12, 2016 原文链接:http://antonioleiva.com/kotlin-android-extensions/ 你也许已厌倦日复一日使用findViewById编写Android视图.或是你可能放弃它转而使用著名的Butterknife库.那么你将会喜爱Kotlin的Android扩展. Kotlin的Android扩展 Kotlin的Android扩展是Kotlin插件的正规插件之一,它无缝覆盖Activities的视图,Fra