专业财税服务推荐

精选优质财税服务,为企业提供专业、可靠的财税解决方案,助力企业健康发展

零报税代理记账
零申报代理记账
报税做账算帐财务报表老会计做账
代理记账
咨询微信:lhy_happyday
工商营业执照年度年报年检公示
全国个体、企业、公司、合作社工商年审年报服务!
个体/10元/次 企业/20元/次
咨询微信:lhy_happyday
财税咨询服务
一对一专业财税咨询,解决企业财税难题,提供定制方案
咨询微信:lhy_happyday
财务分析服务
小规模个体报税0申报税务年报工商年报月报季报报税代理记账
咨询微信:lhy_happyday
立即咨询专业财税顾问
微信号: lhy_happyday
会计从业9年,管理多家个体工商、小规模、一般纳税人等企业的财务、税务等相关工作!。
扫码或搜索添加微信,备注"财税咨询"获取专属优惠
知方号 知方号

Kotlin contract 用法及原理 kotlin是啥

什么是 contract

contract(契约)是一种 Kotlin 面向编译器约定的一种规则,它帮助编译器更加智能地识别某些需要特定的代码条件,为代码创建更加友好的上下文关联环境。 Kotlin 在 1.3 版本以实验室功能的方式开始引入 contract, 截止至当前 Kotlin 最新版本 1.6.10,contract 方法依然添加有 @ExperimentalContracts 注解。 这说明官方认为其能力还不够稳定,但从 Kotlin 标准库已经随处可以看见 contract 的情况下看,contract 应该很快就会变为 release feature,我们可以先了解一下 contract 的能力和用法。

常见的 contract 调用

Standart.kt@kotlin.internal.InlineOnlypublic inline fun T.apply(block: T.() -> Unit): T { contract { // 告诉编译器,这个 block 一定会执行一次 callsInPlace(block, InvocationKind.EXACTLY_ONCE) } block() return this}@kotlin.internal.InlineOnlypublic inline fun T.let(block: (T) -> R): R { contract { // 告诉编译器,这个 block 一定会执行一次 callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return block(this)} 引入 contract 的原因

Kotlin 编译器很强大,从它可以编译成 java 字节码和 JavaScript 就可以看出。但是再强大的编译器也有他的局限性(严格意义上甚至说不上是局限性,只是一种当前最优方案的折中做法),其中就包括智能类型转换和空判断,先举个例子:

//

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。