当前位置: 首页 > news >正文

网站的功能有哪些成都seo培训

网站的功能有哪些,成都seo培训,鞋图相册网站怎么做,荆门市住房和城乡建设局网站操作符 …< ..< 操作符是 Kotlin 在 1.7.20 版本中引入的不包含尾部元素的左闭右开区间操作符。之前我们使用的比较多的操作符可能是 .. 和 until&#xff0c;两者均表示区间&#xff0c;前者是闭区间&#xff0c;后者则表示不包含末端元素的左闭右开区间。 OptIn(Expe…

操作符 …<

..< 操作符是 Kotlin 在 1.7.20 版本中引入的不包含尾部元素的左闭右开区间操作符。之前我们使用的比较多的操作符可能是 ..until,两者均表示区间,前者是闭区间,后者则表示不包含末端元素的左闭右开区间。

@OptIn(ExperimentalStdlibApi::class)
fun main() {val myRange = 0.0..<10.0  // [0.0, 10.0)val yourRange = 0..10     // [0, 10]val herRange = 0 until 10 // [0, 9]
}

IDEA数学符号提示

IDEA 会通过数学符号给出明确的范围提示。

为什么需要 …< ?

针对整形, ..until 可以处理闭区间和左闭右开区间。

fun main() {val yourRange = 0..10     // [0, 10]val herRange = 0 until 10 // [0, 9]println(0 in yourRange)  // trueprintln(10 in yourRange) // trueprintln(11 in yourRange) // falseprintln(0 in herRange)  // trueprintln(10 in herRange) // falseprintln(11 in herRange) // false
}

但是针对浮点型,之前我们只能使用.. 操作符处理闭区间,但是对应 until 的左闭右开区间却无法直接实现。

fun main() {val yourRange = 0.0..10.0     // [0.0, 10.0]val herRange = 0.0 until 10.0 //  Compile Errorprintln(0.0 in yourRange)  // trueprintln(10.0 in yourRange) // trueprintln(11.0 in yourRange) // false
}

没有 ..< 操作符之前,要实现**[0.0,10.0)** 区间,只能使用近似的方法 nextDown,但是依然会有误差。

import kotlin.math.nextDownfun main() {println(0.0..10.0.nextDown())// 0.0..9.999999999999998println(0.0..0.5.nextDown())// 0.0..0.49999999999999994
}

所以,我们需要 rangeUntil 操作符 ..< 帮助我们解决这个问题。

如何使用?

The new operator is Experimental, and it has limited support in the IDE.

  • 启用 -language-version 1.8 编译选项。如果是 build.gradle.kts文件,如下:
val compileKotlin: KotlinCompile by tasks
compileKotlin.kotlinOptions {languageVersion = "1.8"
}
  • 添加注解 @OptIn(ExperimentalStdlibApi::class)。当然 IDEA 会给予开发者提示。

示例

  • 浮点数半开半闭区间
@OptIn(ExperimentalStdlibApi::class)
fun main() {val myRange = 0.0..<10.0println(0.0 in myRange)              // trueprintln(9.99999999999999 in myRange) // trueprintln(10.0 in myRange)             // false
}
  • 时间半开半闭区间
import java.sql.Date
import java.time.LocalDate@OptIn(ExperimentalStdlibApi::class)
fun main() {val dayOf2022 = LocalDate.of(2022, 1, 1)val dayOf2023 = LocalDate.of(2023, 1, 1)println(dayOf2022..<dayOf2023)// 2022-01-01..<2023-01-01val start = Date.valueOf("2017-01-01")val end = Date.valueOf("2017-12-31")val range = start..<endprintln(Date.valueOf("2017-05-27") in range)  // trueprintln(Date.valueOf("2017-12-31") in range)  // falseprintln(Date.valueOf("2018-01-01") in range)  // false
}

为什么可以实现时间类型的半开半闭区间呢?看下源码即可。

@SinceKotlin("1.7")
@ExperimentalStdlibApi
public operator fun <T : Comparable<T>> T.rangeUntil(that: T): OpenEndRange<T> = ComparableOpenEndRange(this, that)

任何实现 Comparable 接口的类都可以使用 ..< 运算符而无需显式定义其功能。

本文部分内容译自:https://medium.com/codex/theres-a-new-operator-in-kotlin-f9ad86dfbbb5

http://www.yayakq.cn/news/27729/

相关文章:

  • 关于加快信用平台网站建设通知wordpress新特性
  • 网站注册空间海南建设工程股份有限公司网站
  • 网站建设 运维 管理包括哪些东莞市建设网站首页官网
  • 自己做网站能否赚钱6外国的网站 ftp
  • wordpress建站给媒体分类宣传网页制作
  • 赣州网站建设策划南通建公司网站
  • 算命公司网站建设制作开发方案网站设计用什么软件
  • 招聘网站源码下载万网 网站建设
  • 网站内容排版设计模板商场网站开发教程
  • 网站建设的论坛长沙网站制作价
  • 学校网站建设开题报告书如何做seo和网站
  • 嘉兴企业网站开发企业大黄页
  • 建设网站基本流程上海外贸展会
  • 秦皇岛黄页大全秦皇岛本地信息网品牌关键词优化
  • 网站建设龙卡要审批多久时间山东个人网站备案
  • 台州seo网站推广费用网站工程师简历
  • 公司建设网站产生哪些费用福田做网站公司怎么选
  • 重庆网站排名外包找培训机构的平台
  • 怎么知道自己网站的权重网站建设风险管理计划书
  • 临沂兰山建设局网站做网站的框架有
  • 网站做彩票网站开发和运行 法律
  • 网站建设视频代码正规的大连网站建设
  • 网站收录和没收录区别顺德大良网站建设开发
  • 网站板块设置app小程序网站开发是什么
  • 房车网站建设意义赤峰建网站
  • 花卉网站建设的总结与中国建设银行官网查询
  • 公司网站做的很烂google国外入口
  • 国外网站app结构设计师之家官网
  • 定制手机微网站手机站是什么意思
  • 网站怎么做移动端余姚做网站首荐荣盛网络