前语

从本年的4月开始下手Kotlin到现在也有几个月时刻了,在Kotlin傍边循环算是这个言语傍边的一个特征,最近Android上用Canvas在做游戏kotlin怎样读开发,变量的界说kotlin实战环也是写索引超出了数组边界什么意思的非常多索引贴,发现在编写多变量的For循环无从下手,毕竟变量类型有哪些要不便是用Java写Ko索引tlin调用,要不便是用While循环写,总算在今天我是处理了这个kotlin下载索引失效点,所以就计划写变量是什么意思篇文章记载一下。

根本运用

在正式学习之前我们先从最简kotlin和java略的For循环开始

从0循环到100

until关键字

until关键字在运用时左边和右侧都需求一个数值,until循环是一个左闭右开区间

for (i in 0 until 100) {
println(i) // 输出: 0 ~ 99
}

毕竟的输出效果包括0不包括100

Kotlin For循环详解

运用..

..在Kotl索引失效的几种状况in中也是有含义的,它称为区间表达式,它标明一个左闭右闭区间,和until关键字相同在运用的kotlin怎样读时分左边和右侧都需求索引贴一个数值

for (i in 0..100) {
pr索引是什么意思intln(i) // 输出: 0 ~ 100
}

Kotlin For循环详解毕竟的输接口crc过错计数出效果包括0也包括100

补偿

其实..关键字也能够在直接声明成一个变量,这个变量就标明一个区间。当循环的时分 循环这个变量就会循环存储在傍边的区间

val test = 0..100

留意: 运用..创立的区间只能是一个升序区间,也便是从小到大,不能从大到小,假定想从大到小需求运用别的一个关键字downTo

从100循环到0

downTo关键字

Kotlin傍边降序循环运用downTo关键字,相同它也是左右侧都需求一个数值

for (i in 100 downTo 0) {
println(i) // 输出: 100 ~ 0
}

Kotlin For循环详解

你会遽然发现为啥是100 ~ 0而不是100 ~ 1,其变量名的命名规则实早在刚在介绍..关键字的结束就说了。在降序循索引超出了数组边界什么意思环方面downTo关键字生成的是一个左闭右闭区间

step关键字

Kotlin在循环的时分默许步长为1,想要改动步长能够运用step关键字

从0循环到10设置步长为kotlin和java2

for源码编辑器 (i in 0..10 step 2) {
print("${if (i == 10) i else "$i--"}") //变量泵 输出: 0--2--4--6--8--10
}

Kotlin For循环详解

循环数组 or 列表

上述标明都是怎样从一个数循环到别源码年代的一个数,实践许多状况下源码编辑器用到循环是拿到ArrayList这种容器里边的值。在Kotlin傍kotlin言语边循环这些容器的操作都是很简略的

循环一个数组 or 列表

篇幅原因这索引失效的几种状况儿就不贴代码效果图了,专家们能够自己拿以下代码去试试

界说一个数组

val arrayList = arrayListOf(1, 2, 3, 4, 5, 6kotlin实战, 12, 31, 23, 123, 12, 3, 123, 2)

直接取出元素

for (i in arrayList) {
println(索引符号i) // 输出: 1,2,3,4....2
}

一起循环变量英文取出索引 and 元素

一起取出元素的索引需求在循环接口时调用容器的withIndex()方法

for ((index, item) in arrayList.索引页withIndexkotlin高阶函数()) {
println("index: $源码年代训练怎样样index, item: $item") // 输出kotlin高阶函数: ind接口无权限ex: 0, item: 1....index: 13, it索引是什么意思em: 2
}

经过索引源码年代遍历一个数组 or 列表

有一些状况经过索引遍历,就能够这么写

for (i in 0 until arrayList.size) {
printl源码年代n(arrayList[i]) // 输出: 1,2,3,4...变量提高.2
}

这时分你会发现索引页你的Idea会给你一个黄线正告,因为Kotlin这种状况现已给你供应好了一个扩展方法indi接口无权限ces

for (i in arrayList.indices) {
println(arrayList[i]) // 输出: 1,2,3,4....2
}

一个小说明

kotlin的for循环其实远不止去遍历数组源码交易平台或列表,根本日常开发用到的变量min表明什么类型的变量数据容器都能够循环遍历(只需这个容器完成了Iterable接口),篇幅原因就不持续了,专家们能够自己去试试

多变量循环

还记得前语里我说的痛点是啥kotlin为什么盛行不起来吗,便是这个多变量循环,java中多变量与函数变量的for循环转化成Kotlin会直接转化成while的语法,可是while会导致代码行数暴增,可读性也不太好,还创立了局部变量。

互相转化

来看一段Java多变量for循环的代码

// 转化前java
for (int i = 0, j = 100; i < 100 &akotlin言语mp;& j &gt接口是什么; 0; i++, j--) {
S索引页ystem.out.pr接口无权限intln("i: " + i + ", j: " + j); // 输出: i: 0, j: 100 ~ i: 99, j: 1
}

这段代码假定让你改成Kotlin的for循环,怎样改?先不急,先转化成kot变量与函数lin看看转化后是啥样的

// 转化后kotlin
var i = 0
va索引符号r j = 100
while (i < 100 && j > 0) {
println("i: $i, j: $j") // 输出: i: 0, j: 100 ~ i: 99, j: 1
i++
j--
}

这儿Kotlin直接给我们转化成了while,坏处呢也说过了,就不赘述了。直接上Kotlin for的代码

for ((i, j) in (0 until 100).zip(100 downTo 0)) {
println("i: $i, j:kotlin高阶函数 $j") // 输出: i: 0, j: 100 ~ i: 99, j: 1
}

实施效果你会发现这三个循环输出都是相同的,索引超出了数组边界什么意思篇幅原因就不别离上图了,现在就介绍一下Kotlin多变量循环变量的界说

界说多变量

在Kotlin的for傍边呢 in关键字的前面一般用来界说循环的变量,或许用来标明被循环容器的索引or每一变量提高项元素,这kotlin教程儿不考虑被循环容器,只考虑界说循环的变量。当源码年代需求界说多个变量时在 () 内部进行界说,每一位变量经过逗号分隔(英文逗号)。in关键字后边呢便是设置循环区间了

for((i,j)  in...){
}

设置循环区间

不知道你有没有发现,其实在kotlin的for循环界说循环变量的时分都没有给它赋予初始值,而是直接指定了kotlin怎样读它需求循环的区间以及是降序循环仍是正kotlin言语序循环,所以上面描绘的in循环前面是界说的变量而不是kotlin和java初始值

现在来给上述界说好的循环kotlin为什么盛行不起来变量设置循环区间,多个循环区间运用 .zip() 函数进行设置

for ((i, jkotlin和java) in (0 until 10).z接口卡ip(1 until 10)) {
println("i: $i, j: $j")
}

上述代码含义 i的区间为0 ~ 10的升序j的区间索引是什么意思为1 ~ 10的源码之家升序

我们来输出看看效果

Kotlin For循环详解
没看错吧,i的莫非不该该是0 ~ 9吗,为什么到8结束了?别急,我们先看j的循变量之间的联系环区间1 ~ 10,没问题吧 until左源码年代闭右开,这儿的j循环次数要比i循环次数少一次,所以结束了索引失效的几种状况。你或许会很懵,为什么结束了莫非不该该i要输出到9吗,别急,我们相同的代码用java写

for (int i = 0, j = 1; i < 10 && j < 10; i++, j++) {
System.out.println("i:" + i + ", j:" + j);
}

Kotlin For循环详解
输出效果共同,协作java一起这块索引贴的用法代码应该就了解起来没问题索引

我们持续

三个变量 and 四个变量

有时分循环的变量有三个或许四个,这时分你会发现又无从源码年代下手了,检验在zi索引页是哪一页p().zip(),会发现给你报个过失

for源码资源站((i,j,k) in (0..100).zip(0..100).kotlin怎样读zip(0..100)){} // 过失代码

Kkotlin和javaotlin: Destructuring declaration initial变量与函数izer of type Pair<Pair<Int, Int>, Int&g源码编辑器t; must have a ‘component3()’ function

大意便是你不能这么写,三个变量或四个变量或许更多的时分你需求运用Pai源码是什么意思r类型的值作为循环变量,Pair是一个二分元组,能够把多个值一索引页是哪一页同赋给一个变量,或许一起给多个变量赋值,有二分就还有三分元组,三分元组接口测验Triple,不过在我的学习过kotlin下载程中没有用上三分,形似现在的fo接口r循环最多也只支接口卡撑也二分元组 (zip()回来二分元组),假定有不对的当地欢迎知道概略的大佬补偿纠正,我也会第一时刻修改本文章kotlin实战

好了那我们就开始吧

三个变量

其实改动很少,in前面依旧是两个变量,不过其间一个存储的是元组,元组内部存储着值

先上代码
for ((i, jPair) in (1..100).zip((0..100).zip(0..接口和抽象类的差异100)) ) {
println("i: $i,  $jPair")
}

你会发现调用两个zip函数,好像我们还没有介绍zip函数的效果蛤,船到桥头自然直,先看输出效果

Kotlin For循环详解
你会发现输出的后边jPair变成了一个政策,其实这个时分jPair现已成了元组政策,输出政策,政策里边有两个值,我们直接输出是这样的,假定我们想要拿到其间一个值呢?这么写

for ((i, jPair) in (1..100).zip((0..100).zip(0..100))) {
println("i: $i |  jPair.firstValue: ${jPair.first} |  jPair.secondValue: ${jPair.second}")
}

输出效果:
Kotlin For循环详解
二分元组只能Kotlin存储两个值,两个值都能够经过 政策.first and 政策.second来获取,现在我们再来介绍zip。

zip()介绍

Returns a list of pairs built from the elements of th源码交易平台is collection and oth源码编辑器er collection with th变量之间的联系e same index. The returned list has length of变量类型有哪些 the shortest collection.

上述的英文是在zip()函数的注释中截取下来的,大致意思便是回来索引最小的集协作为索引,两个集合取它们的交集。

是不是看完觉得很懵,没错我也相同,我们不看注释了直接来看看源码接收的参数还有回来的参数吧kotlin协程原理

public infix fun <T, R> Iterab接口crc过错计数le<T>.zip(other: Iterable<R>)源码编辑器: List<Pair<T, R>> {
return zip(other) { t1, t2 -> t1 to t2 }
}

接收的参数需求是一索引失效的几种状况个完成了Iterablekotlin为什么盛行不起来接口的类型,正好在Kotlin中常用的数据存储结构其接口是什么实都现已完成了这变量提高个接口,一起我们的区间表达式也是支撑的。

在看回来值,回来值回来了一个包括元组政策的列源码本钱表,接下来你就能够再看看三个变量的for循环索引是什么意思,是不是一望而知了

四个变量

四个变量就这么写,细节我也不持续赘述了,和三个变量就只有一点点差异罢了

for ((iPair, jPair) in ((1..接口是什么100).zip(1..100)).zip接口测验((源码年代训练怎样样0..100).zip(0..100))) {
println("iPair: $iPair |  jPair:索引失效 $jPair")
}

实施效果:

Kotlin For循环详解
要拿取元组政策里边的值上述也讲过了,这儿就不在重复了。

小结接口是什么

整体来说在多变量循环的时分Kotlin仍是比较复杂索引页的,可是假定了解语法其实看上去仍是非常简练的,不过日常开发中很少会涉及到多变量循环,这儿也只是提一嘴其实kotlin只能做到的。假定没有理解就自己写写比方,会更源码是什么意思加清楚zip()接口和抽象类的差异函数的用法以及for循环在多索引超出了数组边界什么意思变量的时分实施流程

循环操控

有时分我们需求对循环进行一些操控,kotlin在这方面也有它的共同之处

结构索引符号跳转表达式

和大多数言语相同Kotlin的for循环也是两个结构跳转表达式:

  • break : 停止距离最近的循环
  • continue : 跳kotlin和java出最近的一次循环
for (i in 0 until 10) {
if (i == 5) break // 输出: 0 ~ 4
}
for (i in 0 until 10) {
if (i == 5) continue // 输出: 0 ~ 9
}

标签命名

标签命名算是Kotlin 循环傍边很有特接口测验征的一个点了,咱接口类型们能够给循环设立一个标签,然后经过结构跳转表达式操作标签对应的循环。

命名格局为: 标签名@

跳出指定标签能够这么kotlin高阶函数写: break@标签名 or接口测验面试题 con接口自动化tinue@标签名

all@ for (i in 0 until 100) {
inner@ for (j in 100 downTo 0) {
if (i == 60) break@inner
if (j == 6变量类型有哪些0) continue@all
println("j: $j")
}
println("i: $i")
}

我们能够自己去试试,这儿也就不贴实施效果了

总结

Kotlin的For循变量类型有哪些环我觉得总结的还算比较到位,从简略运用到索引多变量、遍历常用的容器,以及循环操控都总结到了。文章中假定你觉得哪里写的索引页是哪一页有问题欢迎纠正,这也是我的第一篇文章,或许一些知识点源码本钱描绘的不是很好,不过我信任协作代码自己着手试试应该很快能了解我想表达的意思。毕竟谢谢您的阅读!