范围表达式的扩展

发布时间 2023-12-26 21:42:02作者: 施行

上面列出的是Kotlin中最常用的范围表达式。除了这些,Kotlin的范围表达式还可以被用在更多的上下文和复杂的表达式中。虽然没有其他的特殊范围表达式关键字,但是你可以利用上述工具以更多的方式使用范围:

反转范围:

通过使用标准库的扩展函数,可以创建一个反转的范围,例如使用.reversed()

val reversedRange = (1..5).reversed() // 得到一个5到1的递减范围

使用范围来执行更复杂的查询:

结合使用filtermap等集合操作函数,可以在范围上执行复杂的查询。

val squares = (1..10).map { it * it } // 获取1到10每个数的平方

自定义范围类:

你可以实现ClosedRange<T>接口来创建自定义的范围类,这对于非标准类型或者具有特殊行为的范围很有用。

class DateRange(override val start: LocalDate, override val endInclusive: LocalDate) : ClosedRange<LocalDate> { // ... }

使用范围与when表达式:

val score = 85 when (score) { in 90..100 -> println("Excellent") in 80..89 -> println("Good") in 70..79 -> println("Average") else -> println("Fail") }

使用范围来控制流:

利用范围检查来决定程序流程。

if (x !in 0..array.lastIndex) { println("Out of bounds") }

虽然这些不是新的范围表达式,但它们是对基本范围表达式的扩展和创造性使用。Kotlin的强大之处在于你可以将这些构造以非常直观和灵活的方式结合起来,以适应你的特定需求。