Kotlin中是否可拼接两个范围?如何实现合并范围的迭代与判断?
Kotlin中拼接范围的实现方式
Kotlin本身并不支持你示例里的for (i in 1..8,20..25)或1..8 + 20..25这类直接拼接范围的语法,但可以通过以下方式实现类似需求:
1. 迭代拼接后的范围
- 使用
+运算符合并范围:Kotlin的IntRange支持通过plus方法(即+运算符)合并多个范围,注意要给每个范围加括号避免优先级问题:// 正确的合并写法 for (i in (1..8) + (20..25)) { println(i) // 会依次输出1-8、20-25的所有整数 } - 通过序列合并多个范围:如果需要拼接3个及以上范围,用
sequenceOf创建范围序列再扁平化会更清晰:val multipleRanges = sequenceOf(1..8, 20..25, 30..35) for (i in multipleRanges.flatten()) { println(i) }
2. 判断元素是否属于拼接范围
- 直接用逻辑或连接判断:针对少量范围,直接用
||组合多个in判断即可:val targetNum = 23 val isInTargetRange = targetNum in 1..8 || targetNum in 20..25 println(isInTargetRange) // 输出true - 集合+
any方法批量判断:范围较多时,把所有范围存入集合,用any方法检查元素是否在任意一个范围内:val targetRanges = listOf(1..8, 20..25) val targetNum = 7 val isInTargetRange = targetRanges.any { targetNum in it } println(isInTargetRange) // 输出true
内容的提问来源于stack exchange,提问作者Alexander Ites
相关产品推荐
相关产品推荐

