美文网首页
循环控制

循环控制

作者: Green_Apple | 来源:发表于2017-09-01 09:33 被阅读0次

    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 而不是返回一个标签标注的表达式
    

    }

    相关文章

      网友评论

          本文标题:循环控制

          本文链接:https://www.haomeiwen.com/subject/xcehjxtx.html