美文网首页
Kotlin-Ranges(范围)

Kotlin-Ranges(范围)

作者: 122604 | 来源:发表于2017-11-29 16:36 被阅读0次

Ranges 表达式使用一个 .. 操作符,它被定义实现了一个 RangTo 方法。

Ranges 帮助我们简化代码。比如:

                if(i >= 0 && i <= 10){

                                println(i)

                }

        转化成:

                if (i in 0..10){

                                println(i)

                }

Ranges 被定义为可以被比较的任意类型,但是对于数字类型,比较器会通过转换它为简单的类似Java代码来避免额外开销的方式来优化它。数字类型的 ranges 也可以被迭代,编译器会转换它们为与Java中使用index的for循环的相同字节码的方式来进行优化:

                if (i in 0..10){

                        println(i)

                }

Ranges 默认会自增长,所以如果像以下的代码:

                for (i in 10..0){

                        println(i)

                }

它就不会做任何事情。但是你可以使用 downTo 函数:

                for(i in 10 downTo 0){

                        println(i)

                }

我们可以在 ranges 中使用 step 来定义一个从1到一个值的不同的空隙:

                for (i in 1..4 step 2) println(i)

                for (i in 4 downTo 1 step 2) println(i)

如果你想去创建一个open ranges(不包含最后一项,类似数学中的开区间),你可以使用 until 函数:

                for (i in 0 until 4) println(i)

这一行会打印从0到3,但是会跳过最后一个值。这也就是说 0 until 4 ==0..3 。

在一个list中迭代时,使用 (i in 0 until list.size) 比 (i in0..list.size - 1) 更加容易理解。

比如,一个简单的方式去从一个 ViewGroup 中得到一个Views列表可以这么做:

val views = (0..viewGroup.childCount - 1).map { viewGroup.getChildAt(it) }

混合使用 ranges 和 函数操作符 可以避免我们使用明确地循环去迭代一个集合,

还有明确地去创建一个我们用来添加views的list。所有的事情都在一行代码中做好

了。

相关文章

  • Kotlin-Ranges(范围)

    Ranges 表达式使用一个 .. 操作符,它被定义实现了一个 RangTo 方法。 Ranges 帮助我们简化代...

  • 范围

    范围 毕福明 走在人行道上 小心翼翼 生怕踩到狗屎 而大狗小狗们 还在不断的 用它的尿 洒向树根电线杆 垃圾桶 甚...

  • 范围for

    自动识别数组。 识别那些有 .begin() 和 .end() 的容器。 使用基于自变量的查找 begin() 和...

  • 范围

    1.人类的每一个知识,或者说是科技,都是有他的适用范围,如果突破了这个范围,将会是一场灾难。 钱也有他的适应范围,...

  • 范围

    qa行政监管,满意度调查,任务(任务量,任务金),奖金梯度,结算 hr人事档案,人才库,组织结构,入离职,升迁异动...

  • 范围

    我行走于行走,还未走出我的范围 上山下山,延续父辈的命运 和轮回祖辈的命运 我驳杂的血液,正浸污一切的纯净 何时平...

  • datepicker年范围、年月范围使用

    直接上代码

  • 项目范围管理

    范围管理的过程 项目范围管理计划的编制 范围定义 创建WBS 范围确认 范围控制 范围管库计划的编制 范围管理计划...

  • 项目范围管理

    一、范围管理的过程 范围管理有以下过程:范围管理计划编制、范围定义、创建 WBS、范围确认、范围控制。 二、范围管...

  • 取值范围

    有符号整形byte:sizeof(Byte) = 1 bytes;也就是8个二进制位;取值范围:-2^7 ~ 2^...

网友评论

      本文标题:Kotlin-Ranges(范围)

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