Kotlin中降序IntRange应用集合函数为何返回空列表?
Kotlin区间的默认行为与你的误区解释
这是Kotlin区间的基础特性,不是集合函数的问题:
- Kotlin里用
..创建的IntRange是递增区间,只有当起始值 ≤ 结束值时,区间才包含元素。10..1里起始值10大于结束值1,所以这个区间本身就是空的,map自然返回空列表。 - 你想要的逆序结果,得用递减区间来实现,有两种常见写法:
- 用
downTo函数创建递减区间:println((10 downTo 1).map { it * 2 }) // 输出 [20, 18, ..., 2] - 先创建递增区间,再调用
reversed()反转:println((1..10).reversed().map { it * 2 }) // 同样输出逆序的乘2结果
- 用
你的理解误区在于:集合函数确实不会随意受集合顺序影响,但前提是你操作的是一个包含元素的有效集合/区间。10..1本身不是一个有元素的区间,和集合顺序无关,是区间的定义规则导致它为空。
内容的提问来源于stack exchange,提问作者stevenl
相关产品推荐
相关产品推荐

