Kotlin2.4while和for循环

作者: 无心下棋 | 来源:发表于2018-05-13 21:28 被阅读52次

    Kotlin的迭代应该是和Java最接近的。while循环和Java完全一样。for循环仅以唯一一种形式存在,和Java的for-each循环一致。

    2.4.1while循环

    Kotlin中有while循环和do-while循环,它们的语法和Java中相应的循环没有任何区别:

    while(condition) {
      **
    }
    
    do {
       **
    } while (condition)
    

    2.4.2迭代数字:区间和数列

    在Kotlin中没有常规的Java for循环。在这种循环中,先初始化变量,在循环的每一步更新它的值,并在值满足某个限制条件时退出循环。为了替代最常见的循环用法,Kotlin使用了区间的概念。
    区间本质上就是两个值之间的间隔,这两个值通常是数字:一个起始值,一个结束值。只用..运算符表示区间:

    val oneToTen = 1..10
    

    注意Kotlin的区间是包含的或者闭合的,意味着这两个值始终是区间的一部分。

    for (i in 1..100) {
        print(i)
    }
    

    2.4.3迭代map

    让我们来看看可以怎样迭代map:

    val binaryReps = TreeMap<Char, String>()
    for (c in 'A'..'F') {
         val binary = Integer.toBinaryString(c.toInt())
         binaryReps[c] = binary
    }
    

    ..语法不仅可以创建数字区间,还可以创建字符区间。这里使用它迭代用A开始到F的所有字符,包括F。
    这里用到了另外一个实用的小技巧,根据键来访问和更新map的简明语法。可以使用map[key]读取值,并使用map[key] = vaule设置它们,而不需要调用get和put。

    2.4.4使用in检查集合和区间的成员

    使用in运算符来检查一个值是否在区间中,或者它的逆运算!in来检查这个值是否不在区间中:

    fun isLetter(c: Char) = c in 'a'..'z' || c in 'A'..'Z'
    fun isNotDigit(c: Char) = c !in '0'..'9'
    >>>println(isLetter('l'))
    true
    >>>println(isNotDigit('y'))
    true
    

    in运算符和!in运算符也适用于when表达式:

    fun recognize(c: Char) = when (c) {
            in '0'..'9' -> "是数字"
            in 'a'..'z', in 'A'..'Z' -> "是字母"
            else -> "不知道是啥"
        }
    >>>println(recognize('2'))
    是数字    
    

    相关文章

      网友评论

        本文标题:Kotlin2.4while和for循环

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