首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin Ranges:为什么没有像`until`这样的‘downTo`变量来排除最后一项?

Kotlin Ranges是Kotlin语言中用于表示一系列连续的数值范围的概念。在Kotlin Ranges中,我们可以使用..操作符来定义一个闭区间(包含起始值和结束值)或者使用until操作符来定义一个半开区间(包含起始值但不包含结束值)。

在Kotlin Ranges中,我们可以使用downTo操作符来定义一个递减的范围,例如10 downTo 1表示从10递减到1的范围。然而,Kotlin Ranges并没有提供类似until这样的操作符来排除最后一项。

这是因为在Kotlin中,半开区间的设计更符合常见的编程习惯和实际需求。使用半开区间可以避免在循环或迭代过程中需要额外的判断条件来排除最后一项。例如,使用1 until 10表示从1开始,但不包含10的范围,在循环中遍历这个范围时,不需要额外的判断条件来排除10。

Kotlin Ranges的设计目标是简洁、易用和符合直觉,半开区间的使用可以减少代码的复杂性和出错的可能性。因此,Kotlin Ranges没有提供像downTo这样的操作符来排除最后一项。

在使用Kotlin Ranges时,可以根据具体的需求选择合适的区间类型,包括闭区间和半开区间。根据不同的场景,选择合适的区间类型可以使代码更加清晰和易于理解。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(Tencent Blockchain):https://cloud.tencent.com/product/tencentblockchain
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Kotlin安卓开发学习(1)

, 28 5月 2022 作者 847954981@qq.com 后端学习, 我编程之路 Kotlin安卓开发学习(1) Kotlin变量与函数 变量Kotlin变量定义和Java中差别很大...由于checkNumber()函数接收一个Number类型参数,这是Kotlin内置一个抽象类,Int、Long、Float、Double等与数字相关类都是它子类,所以这里就可以使用类型匹配判断传入参数到底属于什么类型...循环语句 与Java相同,Kotlin也提供了while和for两种循环方法,while与Java没有任何区别,但Kotlin在for循环上做了很大程度修改。...Kotlin中可以使用until关键字创建一个左闭右开区间,如下所示: val range = 0 until 10 上述代码表示创建了一个0到10左闭右开区间,它数学表达方式是[0, 10)。...修改main()函数中代码,使用until替代..关键字,你就会发现最后一行10不会再打印出来了。

76230

Kotlin中常见符号详解

现在介绍Kotlin文章已经是铺天盖地,大部分都是从Kotlin基本数据类型介绍起,本文不想重复这样事情,这里从另一面开始,我们来看看Kotlin各种符号。 ?...以下是使用区间一些示例: if (i in 1..10) { // 等同于 1 <= i && i <= 10 println(i) } //使用until函数,创建一个不包括其结束元素区间 for...(i in 1 until 10) { // i in [1, 10) 排除了 10 println(i) } for (i in 1..4) print(i) // 输出“1234” for...你可以使用标准库中定义 downTo() 函数 for (i in 4 downTo 1) print(i) // 输出“4321” step()函数,可以指定任意步长 for (i in 1....还要 :符号,用于类名后表示继承,用于变量后限定变量类型,是Kotlin中最常用符号,这里基本囊括了Koltin中一些常见符号,关于符号就介绍这么多,如有遗漏请再下方留言提出,我将补充上。

1.7K21

你应该切换到Kotlin开发

现在是开始使用新编程语言时候了。自从Kotlin成为谷歌官方语言后,你有没有心动? ? 我想告诉你一个名为Kotlin新编程语言并且阐述为什么你应该考虑下一个项目中使用它。...但是我将会聚焦到最初环境(JVM) 所以以下会给出几个你为什么需要切换到Kotlin语言开发原因(没有先后顺序) 一、与Java互通性 Kotlin能够达到和JAVA100%互通,也就是说你可以使用...,因为你不知道有StringUtils.capitalize() 如果只有一种方法可以向旧类添加新功能,这样IDE将会帮助你在代码中找到相应功能,这一点在Kotlin上面很容易实现. fun String.format...(NullPointerException)或者想法设法避免(有点多于工作) Kotlin则是通过区分非空类型和空类型解决这个问题。默认情况下,类型为非空,并且可以默认添加一个?...= "xyz" b = null // no problem 当你访问一个空变量时候,Kotlin会强制避免NPES(NullPointerException)

45100

Kotlin数据类型和基本语法介绍

Kotlin数据类型 在Kotlin之中,没有所谓基本数据类型.也就是说可以将Kotlin数据全部理解成java之中对象....但是Kotlin定义了基本数值类型和java是一样Byte,Short,Int,Long,Float,Double等 以上数据也只是Kotlin默认封装值.和我们自己定义没有区别 类型 字节...具体传参类型和java是一样. 还有一个区别在于,返回值,写在了函数最后....step 3) print(i) println(); println("使用until函数排除元素") for(i in 1 until 5 ){ //用数学式表示:"[1,5...3进行打印 14710 使用until函数排除元素 13 区间介绍,顺便也介绍了for循环使用 数值设置 在kotlin之中,定义数值可以使用_进行分割,而不影响数值比较 实例: var

17610

Kotlin委托属性和区间

如果你选择复用相同局部委托实例在一个类中实现多属性,你需要在构造函数中初始化实例。 注意:从 Kotlin 1.1 开始,也可以声明 方法局部变量声明为委托属性。...在这种情况下,委托可以直到该变量在方法内部声明时候才去初始化,而不必在构造函数中就执行初始化。 泛型委托 委托方法也可以被声明成泛型这样不同类型属性就可以复用同一个委托类了。...最后until() 中缀函数对于迭代也很有用,该函数(执行结果)不包含最大值。...for (i in 0 until size) { println(i) } 遗憾是,编译器并没有针对这个经典包含区间围优化,迭代器依然会创建区间对象: IntRange var10000...或 downTo() 避免额外临时递进对象创建。 迭代:forEach() 作为 for 循环替代,使用区间内联扩展方法 forEach() 实现相似的效果可能更吸引人。

1.3K70

不要用Java语法思维来写Kotlin

写了多年Java,直到看到Kotlin,原来代码可以如此优雅! 如果你是像我一样是一名 优秀Java开发者 ^_^,而且已经想用kotlin实现你程序,那么,抱歉!...不要用Java语法思维来写Kotlin,不要让kotlin优雅埋没。如果你没有Java开发经验,下面的内容也对你会有帮助。。。 1.尽可能少用 !!...is在声明属性同一模块中执行; 不适用于open属性,或者具有自定义getter属性! var局部变量—适用于变量在类型检查和使用之间没有修改,且不在修改它lambda中捕获!...函数返回值可以是null 8.真的要习惯Koltinfor循环,太强大了 Kotlin没有Java中for(初始值;条件;增减步长)这个规则。...但是Kotlin中对于for循环语句新增了其他规则,满足刚提到规则。

3K40

Kotlin系列一:基础知识快速入门

Kotlin是函数式编程语言(注1:),Kotlin语法非常Scala,python,借鉴了很多语言,学了很多语言发现他们越来越,就像C#之父Anders Hejlsberg说:未来编程语言将逐渐融合各自特性...Kotlin 也有无装箱开销专门表示原生类型数组: ByteArray、 ShortArray、IntArray 等等。这些类与 Array 并没有继承关系,但是它们有同样方法属性集。...这样设计,是为了解决Java中final关键字没有被合理使用问题。 使用指导:永远优先使用val声明一个变量,而当val没有办法满足你需求时再使用var。...由于checkNumber()函数接收一个Number类型参数,这是Kotlin内置一个抽象类,Int、Long、Float、Double等与数字相关类都是它子类,所以就里就可以使用类型匹配判断传入参数到底属于什么类型...Kotlinwhile循环和Java中while循环没有任何区别。

77810

Kotlin开发笔记之委托属性与区间(译)

如果你选择复用相同局部委托实例在一个类中实现多属性,你需要在构造函数中初始化实例。 注意:从 Kotlin 1.1 开始,也可以声明 方法局部变量声明为委托属性。...在这种情况下,委托可以直到该变量在方法内部声明时候才去初始化,而不必在构造函数中就执行初始化。 泛型委托 委托方法也可以被声明成泛型这样不同类型属性就可以复用同一个委托类了。...最后until() 中缀函数对于迭代也很有用,该函数(执行结果)不包含最大值。...for (i in 0 until size) { println(i) } 遗憾是,编译器并没有针对这个经典包含区间围优化,迭代器依然会创建区间对象: IntRange var10000 = RangesKt.until...或 downTo() 避免额外临时递进对象创建。 迭代:forEach() 作为 for 循环替代,使用区间内联扩展方法 forEach() 实现相似的效果可能更吸引人。

65310

写了多年Java,直到看到Kotlin,原来代码可以如此优雅!

写了多年Java,直到看到Kotlin,原来代码可以如此优雅! 如果你是像我一样是一名 优秀 Java开发者 _ ,而且已经想用kotlin实现你程序,那么,抱歉!...不要用Java语法思维来写Kotlin,不要让kotlin优雅埋没。如果你没有Java开发经验,下面的内容也对你会有帮助。。。 1.尽可能少用 !!...is在声明属性同一模块中执行; 不适用于open属性,或者具有自定义getter属性! var局部变量—适用于变量在类型检查和使用之间没有修改,且不在修改它lambda中捕获!...函数返回值可以是null 8.真的要习惯Koltinfor循环,太强大了 Kotlin没有Java中for(初始值;条件;增减步长)这个规则。...但是Kotlin中对于for循环语句新增了其他规则,满足刚提到规则。

3.3K40

Kotlin入门教程,快使用Kotlin

) 常量与变量都可以没有初始化值,但是在引用前必须初始化 4、NULL检查机制 又名Kotlin空安全,这是Kotlin独有的,在对于声明可空参数,在使用时要进行判空处理,有两种处理方式,字段后面加上...,这样可以Java那样如果为空就报空指针异常,还有一种是字段后加?,这样可以不做处理返回null或者配合?:(相当于Java中三元运算)做判空处理: 1//类型后面加?...下面列举kotlin中常用几个函数,用法可以参考:Kotlin中let、also、with、apply函数 1.1、let函数 let扩展函数实际上是一个作用域函数,当你需要去定义一个变量在一个特定作用域范围内...let函数是有返回值,它返回值为函数块最后一行或指定return表达式。 使用场景:需要去明确一个变量所处特定作用域范围内可以使用。...返回值为函数块最后一行或指定return表达式。

97910

Kotlin入门(7)循环语句操作

2、每次循环之后递增值不是1时候要怎么办? 3、循环方向不是递增而是递减,又如何是好? 4、与条件判断有关变量不止一个,咋整? 5、循环过程中变量,在循环结束后还能不能使用?...针对以上情况,其实Kotlin也给出了几个解决办法,代价是多了几个诸如until、step、downTo这样关键字,具体用法见下列代码: // 左闭右开区间,合法值包括11,但不包括66...循环默认递增,这里使用downTo表示递减 for (i in 50 downTo 7) { ... } 可是这些解决办法并不完美,因为业务需求是千变万化,并非限定在几种固定模式。...同时,以上规则容易使人混淆,一旦没搞清楚untildownTo开闭区间,在判断边界值时会产生问题。...和break,Kotlin没有做什么改进呀?

73720

Better Kotlin

这也是南尘最开始喜欢使用方式,没有技术却有一颗装 ✘ 内心,直接写成 Java 文件,再直接一键转换为 Kotlin。...(birthDay, DateTime.now()) } 可以看到,虽然没有方法设置 age 值,但会随着当前日期变化而变化。...之前有人写过这样代码,表示很不解,一个接口类型成员变量,访问外部类成员变量 name。这不是理所应当么?...这里一定要注意,如果你只是这样声明了一个object,Kotlin认为你是需要一个静态内部类。而如果你用一个变量去接收object表达式,Kotlin认为你需要一个匿名内部类对象。...6 注意 Kotlin for 循环 Kotlin提供了 downTo、step、until、reversed 等函数来帮助开发者更简单使用 For 循环,如果单一使用这些函数确实是方便简洁又高效

1.2K20

Kotlin基础学习之循环和异常

前言 Kotlin没有想象中那么牛逼哄哄,也并不难,我更喜欢把他看做一枚语法糖,所谓语法糖就是:能够让代码变得更加简单易读辅助工具。...而在 Kotlin 中,for 循环没有这样用法,但是为了替代这种常见用法,Kotlin 使用了区间概念。 区别在本质上就是两个值之间间隔,一个初始值,一个结束值,使用 .....同时,上面的代码中还有另一个简单小技巧:你可以用map[key]获取值,也可以用map[key] = value设置值,而不用调用get() put()方法。 .....until,其等同于0..ls.size-1,同样,我们也可以使用 withIndex 方法达到和 map 集合遍历一样效果,同时获取键和值。...Kotlin 中使用 in 检查一个值是否在区间中,或者它逆运算 !in。同时 in 也可以作为 when 分支。

63710

Android:这是一份全面 & 详细Kotlin入门学习指南

Kotlin没有 new 关键字 数据类型 & 转换:在Java中通过装箱和拆箱在基本数据类型和包装类型之间相互转换;在Kotlin中,而不管是常量还是变量在声明是都必须具有类型注释或者初始化...变量名跟在var后;数据类型在最后 // 3....,主要包括: 控制流(if、when、for、 while) 范围使用(in、downTo、step、until) 类型检查 & 转换(is、智能转换、as) 相等性(equals()、=、 ==) 空安全...范围使用 主要用于表示范围,主要包括:in、downTo、step、until /** * 1. in * 作用:在...范围内 **/ // 表示:若i在1-5范围内,则执行下面代码 //...智能转换不适用于 open 属性或者具有自定义 getter 属性; // 3. var 局部变量——如果变量在检查和使用之间没有修改、没有在会修改它 lambda 中捕获、并且不是局部委托属性;

2.8K20

Carson带你学Android:这是一份全面 & 详细Kotlin入门学习指南

Kotlin没有 new 关键字 数据类型 & 转换:在Java中通过装箱和拆箱在基本数据类型和包装类型之间相互转换;在Kotlin中,而不管是常量还是变量在声明是都必须具有类型注释或者初始化...变量名跟在var后;数据类型在最后 // 3....,主要包括: 控制流(if、when、for、 while) 范围使用(in、downTo、step、until) 类型检查 & 转换(is、智能转换、as) 相等性(equals()、=、 ==) 空安全...范围使用 主要用于表示范围,主要包括:in、downTo、step、until /** * 1. in * 作用:在...范围内 **/ // 表示:若i在1-5范围内,则执行下面代码 //...智能转换不适用于 open 属性或者具有自定义 getter 属性; // 3. var 局部变量——如果变量在检查和使用之间没有修改、没有在会修改它 lambda 中捕获、并且不是局部委托属性;

2.1K20

Kotlin学习之路(3)控制语句

任何编程语言都会有自己条件控制语句,这样才能使其逻辑更加完整。Kotlin控制语句与Java类似但也有些不同,本节将对条件 循环 以及运算符号表达式进行详细介绍。...:(b===null) Kotlin == 不再比较两个变量是否引用同一个对象,通俗易懂方式说在Kotlin == 相当于Java中equals()方法,只不过==是比较空指针安全 Java...} } 从以上代码来看,when/else 与switch/case 有几点区别 首先是关键字switch被when替代 判断语句由原来case:常量值变为现在常量值 -> 每个分支后面没有...但是在Kotlin中这个限制被去掉了,进行分支处理时候允许引入变量进行判断。...对于以上问题,Kotlin也给出了几个解决办法,代价无非就多了几个关键字,until step downTo // 左闭右开区间,合法值包括8,但是不包括20 for(i in 8 until 20

64520

从 Java 开始进入 Kotlin世界: From Java to Kotlin: JKotlinor从 Java 开始进入 Kotlin世界: From Java to Kotlin: JKo

为了更好认识Java与Kotlin这两门语言,我们在这里给出一些基本功能,同时使用Java与Kotlin实现代码实例。通过横向对比,从中我们可以看出它们异同。...("Kotlin") 其实,Kotlinprintln函数是一个内联函数,它其实就是通过封装java.lang.System类System.out.println实现。...中使用$和${}(花括号里面是表达式时候)占位符实现字符串拼接,这个比在Java中每次使用加号拼接要方便许多。...if (object is Car) { var car = object // Kotlin智能转换 } Kotlin类型系统具备一定类型推断能力,这样也省去了不少在Java中类型转换样板式代码...for (i in 1..10) { } for (i in 1 until 10) { } for (i in 10 downTo 0) { } for (i in 1..10 step 2)

43820

kotlin基本语法

java各种痛点而产生,利用kotlin可以大大减少开发过程中代码量编写,有一套几乎可以杜绝空指针机制,kotlin没有分号 二、如何运行Kotlin代码 郭霖大神这本第三行代码是在...,所以不指定时根据后面的赋值即可自动推导出他类型,如果需要指定,需要:变量类型,有一点与java不同就是,kotlin没有基本类型,全部利用类替代,Int 相当于 int ,首字母全部大写。...if条件语句 if语句拥有和java几乎一样功能和用法,不过kotlinif具有返回值,这使得它可以利用语法糖简化代码,以每个条件最后一行作为返回值 fun hhh(name :String...间隔1 val b = 0 until 10 //代表区间[0,10) //也可以设置间隔 val c = 1..10 step 2 //也可以倒序输出 val d = 10 downTo 1 五、面向对象编程...函数体} 最后一行代码作为函数返回值 Java函数式API使用 与后面android sdk 接入有关,不过目前还没怎么看懂,用到了再说 七、空指针检查 可空类型系统 kotlin

57430
领券