Kotlin区间

79 阅读2分钟

Kotlin区间

一、区间类型体系

Kotlin通过标准库提供完备的区间类型体系,包含IntRange、LongRange、CharRange等具体实现。数学中的区间概念在编程中被具象化为可操作对象,支持离散值集合(整型、字符)和连续数值范围(浮点型)两种形态。

二、区间创建语法

  1. 闭区间start..end 包含边界值

    val intRange = 1..10    // [1,10]整型闭区间
    val charRange = 'a'..'z' // 字符闭区间
    
  2. 半开区间start until end 前闭后开

    val halfOpen = 1 until 10 // [1,10)等价数学左闭右开区间
    
  3. 倒序区间downTo 关键字

    val reverse = 10 downTo 1 // 递减整型区间[10,9,...,1]
    

三、步长控制机制

通过step扩展函数实现离散值间隔控制:

val step2 = 1..10 step 2       // 1,3,5,7,9
val charStep = 'a'..'z' step 3 // a,d,g,j...

离散特性限制:浮点型区间(DoubleRange/FloatRange)不支持步长设置,因其表示连续数值范围。

四、核心操作特性

  1. 包含判断

    println(5 in 1..10)     // true
    println(3.14 in 1.0..5.0) // 连续区间包含判断
    
  2. 迭代遍历

    for (i in 1..5) { print("$i ") } // 输出:1 2 3 4 5
    
  3. 数组索引遍历

    val arr = arrayOf("A","B","C")
    for (i in arr.indices) {  // indices返回IntRange
        println(arr[i])
    }
    

五、浮点区间特性

  1. 不可迭代性:浮点区间属于连续数学区间,无法通过iterator()遍历
  2. 范围判断:支持in操作符进行边界检查
    println(2.718 in 1.0..3.0)  // 输出true
    

六、特殊类型支持

  1. 无符号类型UIntRange等无符号区间

    val uintRange = 1u..10u step 2
    
  2. 自定义类型:实现Comparable接口的类型均可创建区间

    val dateRange = LocalDate.of(2023,1,1)..LocalDate.of(2023,12,31)
    

七、数学概念对应

数学表示Kotlin实现特性描述
[a,b]a..b包含端点,离散可迭代
[a,b)a until b前闭后开,索引遍历常用
(a,b]需自定义实现通过比较逻辑组合实现
连续区间浮点型区间不可迭代,仅范围判断

本指南融合数学理论与编程实践,完整呈现Kotlin区间操作的核心机制。通过类型化区间对象和丰富的操作符重载,Kotlin将数学抽象转化为可执行的程序逻辑,极大提升了范围操作的表达力与安全性。