首页 > 其他分享 >范围表达式的扩展

范围表达式的扩展

时间:2023-12-26 21:44:37浏览次数:29  
标签:.. val 扩展 使用 println 表达式 范围

上面列出的是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的强大之处在于你可以将这些构造以非常直观和灵活的方式结合起来,以适应你的特定需求。

标签:..,val,扩展,使用,println,表达式,范围
From: https://www.cnblogs.com/uudon/p/17929432.html

相关文章

  • 正则表达式校验特殊字符(通用,一般情况下)
    /[\`\~\!\@\#\$\%\^\&\*\(\)\_\+\-\=\{\}\|\[\]\:\;\'\<\>\?\,\.]*/.test(string)//直接写判断条件时,不使用/^XXX$/.test(string)(^)匹配输入字符串的开始位置和($)匹配输入字符串的结束位置直接使用/XXX/.test(string)^匹配输入字符串的开始位置。如果设置了RegExp对......
  • BOSHIDA DC电源模块的使用范围是什么?适用于哪些应用场景?
    BOSHIDADC电源模块的使用范围是什么?适用于哪些应用场景?DC电源模块是一种用来提供直流电源的设备,可用于各种应用场景。其主要使用范围包括但不限于以下几个方面:1.电子设备供电:DC电源模块可为各种电子设备提供稳定的直流电源,如计算机、手机、音频设备、摄像机等。它们通常需要稳......
  • 正则表达式
      publicstaticvoidmain(String[]args){Stringregex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?^&~#()-+=;,.{}<>/?])[A-Za-z\\d**$@$**!%*?&]{12,}$";//替换为你的正则表达式Stringinput="gzh12345678GZ......
  • 关于集合的扩展 C#
    ///<summary>//////</summary>///<typeparamname="T"></typeparam>///<paramname="sources"></param>///<paramname="details"></param&......
  • ClickHouse 的水平扩展策略与实践
    1.背景介绍水平扩展(HorizontalScaling)是一种在数据库系统中增加服务器数量以提高系统性能的方法。在大数据时代,数据量越来越大,传统的垂直扩展方式已经无法满足业务需求。因此,水平扩展成为了一种必须要学习和掌握的技术。ClickHouse是一个高性能的列式数据库管理系统,专为OLAP类应用......
  • Thunderbolt 3 PCIe Expansion 扩展卡
    计算机目前大部分都能够提供Thunderbolt3接口了。Thunderbolt3的传输速度更快,所以我们需要把Thunderbolt3转换为SASHBA,但市场上没有这个转换设备。后来我们发现有Thunderbolt3PCIeExpansion,就是通过这个设备把Thunderbolt3转换为PCIe卡槽,然后再插上SASHBA卡,......
  • MSSQL执行查询报错“使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其
     MSSQL执行查询报错“使用 UNION、INTERSECT 或 EXCEPT 运算符合并的所有查询必须在其目标列表中有相同数目的表达式。”报错截图: 根本原因如提示,列不一致,列的个数和列名,顺序都需要一致。 ......
  • 参与循环的正则表达式可能导致异常
    问题描述:批量上传图片后,我们希望获取每一个图片的名字letreg=/(.+)\.(jpg|png|gif|jpeg|webp)/gi; //作为全局变量functioninfo(){letimgInfo=reg.exec(file.name)//这是在循环方法里。然后就出错了。file.name是能获取的,但是经过 reg.exec()处理要得到结果时......
  • .NET中反射和动态表达式的分析和比较
    背景在.NET中,反射和动态表达式是两种常用的动态编程技术。它们都可以用来在运行时动态地创建和操作对象、调用方法、访问属性和字段等。但是,它们在性能方面有一些差异。反射:反射是.NET中的一种基础技术,可以用来获取程序集、类型、方法、属性、字段等的元数据,以及动态地创建对......
  • Chrome扩展程序是如何进行消息传递的
    大家好,我是dom哥。这是我关于Chrome扩展开发的系列文章,感兴趣的可以点个小星星。一个复杂的Chrome扩展程序通常由content_scripts,background,actionpopup,sidepanel,optionspage,devtools等部分组成,这些部分所负责的功能各不相同,所处的运行环境各不相同,所能访问的chrome......