Kotlin:循环语句for与while

For语句

使用for语句做迭代需要满足:提供一个迭代器Iterator。

使用成员函数提供迭代器

如Array:

operator fun iterator(): Iterator<T>

注意:iterator()函数需要使用operator标记。

使用扩展函数提供迭代器

除了添加成员函数iterator提供迭代器外,也可以通过extension function来添加iterator()提供迭代器。

如String:

operator fun CharSequence.iterator(): CharIterator

注意:iterator()函数需要使用operator标记。

语法

for (item in collection) {
  //do something
}

如果for的执行体里只有一行语句,可以省略大括号

for (item in collection) print(item)

应用

迭代字符串

val text = "Hello,World."
for(c in text)
    println(c)

迭代数组

var arr = arrayOf("a","b","c","d")

for(item in arr)
    println(item)

迭代数组索引及元素

var arr = arrayOf("a","b","c","d")

for((i, v) in arr.withIndex())
    println("$i -> $v")

这里使用Array的withIndex()返回一个Iterable<IndexedValue<T>>,它包含了索引

While语句

while语句有两种用法:

while

while (x > 0) {
    x--
}

do-while

do {
    val y = retrieveData()
} while (y != null) //注意:y在此处是可见的

版权声明:著作权归作者所有。

相关推荐

在React JSX内部执行循环

这里实现一个表格组件来演示如何在React的JSX内部执行循环。案例假设有一个表格组件,和一个行组件<ObjectRow />,现在需要在表格组件里循环生成行组件<ObjectRow />。是不能直接在jsx里使用for循环,这里介绍两种方法:map函数和立即执行函数。方法一:使用map函数render: function ()&nb

JavaScript跳出forEach循环

JavaScript提供了forEach用于遍历数组。但使用forEach做迭代时有一个问题,它不允许在遍历完所有元素之前终止循环跳出,即不能使用break语句。即使是在函数里使用return false也不行。示例var arr = ["a", "b, "c, "d"

Sql Server使用查询语句更新数据

Sql Server支持在一个sql语句里使用查询的数据更新表。简单更新简单的使用一个表的数据更新另一个表。UPDATE    table_a  SET    table_a.col1=table_b.col1 FROM    table_b  WHERE table_

Kotlin:return与跳转

Kotlin有两种跳转:循环跳转(break与continue)和返回跳转(return)。Labellabel语法:labelName@ label可以放在任何表达式之前,用来标记表达式。如loop@ for (i in 1..100) {     // ... } break和continueb

Kotlin:流程控制之条件语句 if 和 when

在Kotlin有两种用于判断条件的语句if 和when。if在Kotlin,if既可以是条件语句,仅仅用作条件判断,还可以是条件表达式,表达式会返回一个值。传统的条件判断if语句var max = a  if (a < b) max = b if-elsevar max:&

Kotlin:基本类型 - Char与Boolean

字符类型Kotlin使用Char表示字符,与Java不同的是,它并不能直接和数字做类型转换。字符表示它们使用单引号''把字符括起来特殊字符:特殊字符串使用反斜杠开头,如\t, \b, \n, \r, \', \", \\ and \$其他一些字符可以使用Unicode编码,如'\uFF00'数字转换Kotlin的字符不能直接和数字做类型转换,但我们可以它们的unicode码的相对差来做数