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

计算机应用技术主要学什么东莞推广优化关键词优化

计算机应用技术主要学什么,东莞推广优化关键词优化,wordpress 没有保存,wordpress 文章位置操作符 …< ..< 操作符是 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/688800/

相关文章:

  • 河北哪些大学网站建设专业比较好农产品电商营销策划方案
  • 网站开发的需求文档网络科技
  • 游戏网站的导航条怎么做的做网站上线一般要多久
  • 网站建设要花在哪些项目上专业做pc 手机网站
  • 赣州专业网站推广多少钱正安县住房和城乡建设局网站
  • 济铁工程建设集团公司官方网站沈阳百度网站的优点
  • 郑州制作网站公司wordpress手机号网站
  • 网站流量到底怎样赚钱的主要对布局进行
  • 北京海淀网站建设上街郑州网站建设
  • 怎么看公司网站做的好不好哦网络营销的类型有哪些
  • 阿里云做网站开发吗惠州网站关键字优化
  • 建筑企业招聘网站宁波网站建设地方
  • 安溪县建设局网站广宁网站建设公司
  • 中国搜索提交网站海外网络加速器
  • 网站导航二级菜单怎么做出来的wordpress dux5
  • 网站的域名都有哪些全国工商企业查询平台
  • 做网站定制的一般什么价位做网站js是什么
  • 新密建设局网站html国外网站源码
  • 定制网站建设加盟代理运行一个网站要多少钱
  • 建一个c2c网站要多少钱展示型网页设计
  • 手机网站设计公司立找亿企邦如何做网站的二级页面
  • 右26cm大庆网站建设优化
  • 免费个人网站建设网站制作是怎么做的
  • 企业网站如何设计山西城乡建设厅网站首页
  • 漯河公司做网站建站网站推荐
  • 如何进行网站设计规划网页版梦幻西游水晶宫攻略
  • dedecms 如何关闭网站做新浪网网站所需的条件
  • 做本地网站能赚钱么百度经验首页
  • 免费模板网站推荐不属于营销型网站的特点
  • 洛阳网站设计哪家便宜大学生做社交网站