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

武汉做网站icp游戏推广员如何推广引流

武汉做网站icp,游戏推广员如何推广引流,小程序制作pdf,asp.net做购物网站操作符 …< ..< 操作符是 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.hkea.cn/news/225941/

相关文章:

  • 360应用商店seo服务套餐
  • 废橡胶网站建设个人博客网页设计
  • 什么网站做一手项目好域名查询官网
  • 做日用品的要找什么网站好站长工具端口检测
  • 贵州软件开发 网站开发手机版百度一下
  • 企业网站建立答辩问题百度怎么发布广告
  • 温州快建网站地推拉新接单网
  • 濉溪县城乡建设委员会燃气办网站热狗网站排名优化外包
  • 网站能不能自己做免费的seo教程
  • 湖南的商城网站建设优化教程网下载
  • 做网站需要哪些工程师西安seo诊断
  • tp做的网站封装成app2023北京封控了
  • 增城做网站要多少钱推广普通话手抄报
  • 石家庄网站系统开发智能搜索引擎
  • 迅速网站网络营销平台推广方案
  • 学前端要逛那些网站微信引流主动被加软件
  • 韩国flash网站免费手机网站建站平台
  • 东莞做网站卓诚网络昆明长尾词seo怎么优化
  • WordPress个性萌化插件郑州seo优化哪家好
  • 专业手机移动网站建设免费的seo优化
  • 西安网站建设王永杰域名注册 万网
  • 网站营销优化方案北京做的好的seo公司
  • 企业网站排名提升软件优化南宁seo优化
  • 创意合肥网站建设杭州seo公司排名
  • 网站专题页是什么中国十大关键词
  • 五月天做网站网络策划与营销
  • 高校网站如何建设论文谷歌官网下载
  • 做网站内容软件个人网站怎么做
  • 收废铁的做网站有优点吗海南百度推广开户
  • wordpress 二维码插件下载信阳搜索引擎优化