循环控制

2017-09-01  本文已影响0人  Green_Apple

package xuhuankongzhi
//----------------for循环------------
//for循环可以对任何提供迭代器的(iterator)的对象进行遍历
/*fun main(args: Array<String>) {
val collection=setOf(1,2,3,1) //set集合不重复
for(item in collection)println(item)

//循环体可以是一个代码块
val ints=IntArray(3){i->i};
for(item:Int in ints)println(item)

//for可以循环遍历任何提供迭代器的对象
//若需要通过索引遍历也是可疑z的  ints.indices (即是数组的索引下标)
for(i in ints.indices)println(ints[i])

//注意这种在区间上遍历会编译成优化的实现而不会创建额外的对象
//或者可以使用库函数。withIndex  返回(下标,数值)的键值对
for((index,value)in ints.withIndex())println("the element at $index is $value")

}*/

//------------while 和 do..while-----------------------
/*
传统和java一样的使用

*/

//---------------返回和跳转-----------------
/*
Kotlin有三种结构化台哦转表达式
return 默认从最直接保卫他的函数或者匿名函数返回
break 终止直接包围它的循环
continue 继续下一次的直接包裹的循环
Kotlin 支持传统java的使用

Break 和Continue标签
在Kotlin中,任何表达式都可以用标签(label)来标记
标签格式为标识符后跟@符号

break 跳转到位于该标签制定的循环后面的执行点
continue 继续标签制定的continue的循环的下一次迭代

*/

/*fun main(args: Array<String>) {
loop@ for( i in 1..100)
for(j in 1..100){
println(j)
if(j==2) break@loop
}
//loop 执行点 break跳转后
}
*/

//-----------------标签处返回---------------
/*
Kotlin 有函数字面量、局部和对象表达式
因此Kotlin函数可以被嵌套,标签限制的return 允许我们从外层函数返回
最重要的一个用途是从lambda表达式中返回
*/
fun main(args: Array<String>) {
val ints=arrayOf(1,2,3,4)
fun foo(){

    ints.forEach lit@{
        if(it==2)return@lit
            print(it)
        }
    //隐式,与lambda的函数名相同
    ints.forEach {
        if(it==2)return@forEach
            print(it)
        }
    //匿名函数代替lambda表达式,匿名函数内部return将从该匿名函数自身返回

}

fun foo2(){
    ints.forEach(fun(value:Int){
        if(value==0)return
        print(value)
    }) 
}


foo()
foo2()

//return @a 1
//当返回一个值的时候,解析器优先选用标签限制的return
// 意为从标签@a 1 而不是返回一个标签标注的表达式

}

上一篇下一篇

猜你喜欢

热点阅读