Kotlin实战指南四:区间
轉(zhuǎn)載請標(biāo)明出處:https://blog.csdn.net/zhaoyanjun6/article/details/87866868
本文出自【趙彥軍的博客】
Kotlin初體驗(yàn)四:區(qū)間
- 區(qū)間
- 實(shí)用函數(shù)
區(qū)間
區(qū)間表達(dá)式由具有操作符形式 … 的 rangeTo 函數(shù)輔以 in 和 !in 形成。 區(qū)間是為任何可比較類型定義的,但對于整型原生類型,它有一個(gè)優(yōu)化的實(shí)現(xiàn)。以下是使用區(qū)間的一些示例:
if (i in 1..10) { // 等同于 1 <= i && i <= 10println(i) }整型區(qū)間(IntRange、 LongRange、 CharRange)有一個(gè)額外的特性:它們可以迭代。 編譯器負(fù)責(zé)將其轉(zhuǎn)換為類似 Java 的基于索引的 for-循環(huán)而無額外開銷:
for (i in 1..4) print(i)如果你想倒序迭代數(shù)字呢?也很簡單。你可以使用標(biāo)準(zhǔn)庫中定義的 downTo() 函數(shù):
for (i in 4 downTo 1) print(i)能否以不等于 1 的任意步長迭代數(shù)字? 當(dāng)然沒問題, step() 函數(shù)有助于此:
for (i in 1..4 step 2) print(i)for (i in 4 downTo 1 step 2) print(i)要?jiǎng)?chuàng)建一個(gè)不包括其結(jié)束元素的區(qū)間,可以使用 until 函數(shù):
for (i in 1 until 10) {// i in [1, 10) 排除了 10println(i) }實(shí)用函數(shù)
rangeTo //升序區(qū)間 downTo() //降序區(qū)間 reversed() //翻轉(zhuǎn)區(qū)間 step() //步長實(shí)例演練
var a = 0.rangeTo(10) //相當(dāng)于 0..10var b = 10.downTo(0) //相當(dāng)于 10..0 b = b.reversed() //翻轉(zhuǎn)區(qū)間 var b = 10.downTo(0).step(3)請注意,返回?cái)?shù)列的 last 值可能與原始數(shù)列的 last 值不同,以便保持不變式 (last - first) % step == 0 成立。這里是一個(gè)例子:
(1..12 step 2).last == 11 // 值為 [1, 3, 5, 7, 9, 11] 的數(shù)列 (1..12 step 3).last == 10 // 值為 [1, 4, 7, 10] 的數(shù)列 (1..12 step 4).last == 9 // 值為 [1, 5, 9] 的數(shù)列個(gè)人微信號(hào):zhaoyanjun125 , 歡迎關(guān)注
總結(jié)
以上是生活随笔為你收集整理的Kotlin实战指南四:区间的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kotlin实战指南三:流程控制
- 下一篇: Kotlin实战指南五:继承、接口