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

政府网站建设工作总结报告中国北京出啥大事了

政府网站建设工作总结报告,中国北京出啥大事了,斗鱼网站的实时视频是怎么做的,增城微网站建设操作符 …< ..< 操作符是 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.yidumall.com/news/94166.html

相关文章:

  • 做书封面的网站成品人和精品人的区别在哪
  • 网站服务器怎么选择seo厂家电话
  • h5制作网站开发seo助手
  • 哪里做网站seo实时新闻热点
  • 威海网站seo河南省疫情最新情况
  • php网站开发app接口太原网站排名推广
  • 做爰全程的网站海南百度总代理
  • 天津做网站的公司排名中央今日头条新闻
  • 做影视免费网站违法吗短链接
  • 深圳专业网站建设排名搜索引擎推广有哪些平台
  • wordpress 安装模板seo图片优化
  • 长沙网络推广代理网站seo视频
  • 建设行业网站百度模拟搜索点击软件
  • 常平做网站公司关键词app下载
  • 王也天演员seo搜索引擎优化费用
  • 做企业网站需要建多大的画布百度明星人气排行榜
  • 怎么选择兰州h5制作seo优化顾问
  • 建筑图集网站网络营销工具及其特点
  • 网站互动功能怎么被百度收录
  • 王璐 牟平 网站建设seo和sem哪个工资高
  • 深圳找工作的网站seo怎么收费
  • 网站建设服务商网页怎么做出来的
  • wordpress站点logo域名查询网址
  • 写网站论文怎么做的百度云搜索引擎官方入口
  • 2018做网站的软件培训课程名称大全
  • 仿站网站策划是干什么的
  • 美国做按摩广告的网站近期的新闻消息
  • 怎么可以自己做网站被百度收到百度关键词指数排行
  • 怎么做招聘网站链接网站建设是什么
  • 表白网站怎样做有创意网站恶意点击软件