转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87866868
本文出自【赵彦军的博客】


Kotlin初体验四:区间

  • 区间
  • 实用函数

区间

区间表达式由具有操作符形式 … 的 rangeTo 函数辅以 in 和 !in 形成。 区间是为任何可比较类型定义的,但对于整型原生类型,它有一个优化的实现。以下是使用区间的一些示例:

if (i in 1..10) { // 等同于 1 <= i && i <= 10println(i)
}

整型区间(IntRange、 LongRange、 CharRange)有一个额外的特性:它们可以迭代。 编译器负责将其转换为类似 Java 的基于索引的 for-循环而无额外开销:

for (i in 1..4) print(i)

如果你想倒序迭代数字呢?也很简单。你可以使用标准库中定义的 downTo() 函数:

for (i in 4 downTo 1) print(i)

能否以不等于 1 的任意步长迭代数字? 当然没问题, step() 函数有助于此:

for (i in 1..4 step 2) print(i)for (i in 4 downTo 1 step 2) print(i)

要创建一个不包括其结束元素的区间,可以使用 until 函数:

for (i in 1 until 10) {// i in [1, 10) 排除了 10println(i)
}

实用函数

rangeTo  //升序区间
downTo()  //降序区间
reversed()  //翻转区间
step()  //步长

实例演练

var a = 0.rangeTo(10)  //相当于 0..10var b = 10.downTo(0)  //相当于 10..0
b = b.reversed()    //翻转区间
var b = 10.downTo(0).step(3)

请注意,返回数列的 last 值可能与原始数列的 last 值不同,以便保持不变式 (last - first) % step == 0 成立。这里是一个例子:

(1..12 step 2).last == 11  // 值为 [1, 3, 5, 7, 9, 11] 的数列
(1..12 step 3).last == 10  // 值为 [1, 4, 7, 10] 的数列
(1..12 step 4).last == 9   // 值为 [1, 5, 9] 的数列

个人微信号:zhaoyanjun125 , 欢迎关注

Kotlin实战指南四:区间相关推荐

  1. Kotlin实战指南十七:JvmField、JvmStatic使用

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/116668666 本文出自[赵彦军的博客] 文章目录 往期精彩文章 @JvmFiel ...

  2. Kotlin实战指南二十:flow

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/117370700 本文出自[赵彦军的博客] 文章目录 往期精彩文章 flow 是啥 ...

  3. Kotlin实战指南十九:use 函数魔法

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/117366756 本文出自[赵彦军的博客] 文章目录 往期精彩文章 use函数 往期 ...

  4. Kotlin实战指南十八:open、internal 关键字使用

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/117365712 本文出自[赵彦军的博客] 文章目录 往期精彩文章 open关键字 ...

  5. Kotlin实战指南十三:协程

    转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/95626034 本文出自[赵彦军的博客] 文章目录 前言-协程介绍 主流语言对协程 ...

  6. Kotlin实战指南十四:协程启动模式

    转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/96008400 本文出自[赵彦军的博客] 文章目录 协程启动 DEFAULT LA ...

  7. Kotlin实战指南十:let、apply、with、run

    转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details//94402604 本文出自[赵彦军的博客] 文章目录 let 示例1:基础用法 示 ...

  8. Kotlin实战指南三:流程控制

    转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87855797 本文出自[赵彦军的博客] Kotlin初体验三:流程控制 if 表 ...

  9. Kotlin实战指南一:集合

    转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87781732 本文出自[赵彦军的博客] Kotlin初体验一:集合 集合 一.l ...

最新文章

  1. SpringMVC如何是使用自动注入@autowrid
  2. 计算机里硬盘图标,计算机中在硬盘图标下面有个其他里PPS图标肿么删?
  3. U盘拷贝文件很慢?稍微改变一下使用方式,传输速度就快了6倍
  4. linux mmu的实现的讲解_Linux_MMU
  5. 谢谢有你【我与51CTO一“七”成长】
  6. 蚂蚁区块链第1课 蚂蚁10大区块链解决方案及应用场景
  7. Ruby on Rails 入门学习
  8. Android实例开发中按钮(Button)的四种点击方式的实现
  9. 小程序 Serverless: 解放生产力,驱动研发效能提升 1
  10. 监控100台RouterOS路由器的各个pppoe拨号失败的数目并钉钉通知
  11. 究竟是什么人在买爱马仕?
  12. paper 77:[转载]ENDNOTE使用方法,常用!
  13. RHCA-红帽认证架构师
  14. Linux:ls命令
  15. p5.js 光速入门中文教程
  16. 我是一个功利主义ACMer
  17. VR看房火热背后,简单谈谈拍摄VR全景图片——普及贴
  18. Linux语音通话如何消除回声(PulseAudio)
  19. 天源迪科和科大讯飞的关系_【科大讯飞学习机招代理】科大讯飞学习机介绍,有什么优势?...
  20. python指定变量类型_Python 变量类型详解

热门文章

  1. linux一切对象皆文件,为什么说Linux下“一切皆文件”?
  2. android 内存占用大 卡顿,安卓手机用久了就会卡顿?那是内存使用率高了,你需要这么做...
  3. python格式化代码工具_python 代码格式化工具:YAPF
  4. asp和php数据库怎么区分,asp与php的数据库有哪些区别
  5. mysql中my.cnf文件_MySQL中my.cnf文件选项
  6. 直播 | AAAI 2022论文解读:三⻆分解一致性约束的端到端语音翻译
  7. 飞桨领航团邀你出战!黑客松线下48H Coding Party等你来
  8. NAACL 2021 | AWS AI 提出基于对比学习的端到端无监督聚类方法
  9. IDRLnet: 基于内嵌物理知识神经网络的开源求解框架
  10. GlobalPointer:用统一的方式处理嵌套和非嵌套NER