Kotlin 中的 Range 有 CharRange、LongRange、IntRange
CharRange、LongRange、IntRange
范围区间
var a:IntRange= 50..100for (i in a){ //遍历50~100的分数分别在什么位置print("成绩:$i")if(i in 1..59){ //1~59 范围println(" 不及格")}else if(i in 60..69){ //60~69println(" 及格")}else if(i in 70..79){ //70~79 范围println(" 良")}else if(i in 80..89){ //80~89 范围println(" 好")}else if(i in 90..100){ //90~100 范围println(" 优")}else if(i !in 1..100){ //1~100 范围println(" 错误分数")}}
var b:IntRange= 50 until 100for (i in b){ //遍历50~100的分数分别在什么位置print("成绩:$i")if(i in 1 until 60){ //1~59 范围println(" 不及格")}else if(i in 60 until 70){ //60~69println(" 及格")}else if(i in 70 until 80){ //70~79 范围println(" 良")}else if(i in 80 until 90){ //80~89 范围println(" 好")}else if(i in 90 until 100){ //90~100 范围println(" 优")}else if(i !in 1 until 100){ //1~100 范围println(" 错误分数")}}
对比两次结果可以看到


.. 这个符号为闭区间符号
until 这个为半封闭区间
好,我来做一个临界点的测试,看看区间
var b:IntRange = 1..50val iss: Boolean = b.contains(51) // falseval isn: Boolean = 51 in b // falseval isc: Boolean = 50 in b // trueval isd: Boolean = b.contains(50) // trueprintln(iss)println(isn)println(isc)println(isd)
我先定义了一个全封闭的区间
拿51与50代入去测试
发现返回
当51时,超出临界点的时候为false
当50时,刚好在临界点时为true
var c:IntRange = 1 until 50val isg: Boolean = c.contains(50) // falseval ish: Boolean = 50 in c // falseval isj: Boolean = 49 in c // trueval isk: Boolean = c.contains(49) // trueprintln(isg)println(ish)println(isj)println(isk)
当定义一个1~50半封闭的区间
我代入49~50时
发现返回
当值为50时,超出临界点 为false
当值为49时,在包含之中 为true
CharRange,LongRange就不讲了
var q:CharRange = 'a'..'z'println(q)var l:LongRange = 1..10000000000println(l)