虽然kotlin有智能推断功能,但是有时候还是有些代码没有办法进行推断,因此,诞生了Contract(契约)功能,不过目前该功能还是实验功能(ExperimentalContracts),其使用可以参考 apply
、let
等功能,kotlin源码中有大量的Contract(契约),示例如下:
另外经过尝试,该函数可以写成顶层函数或者类中,但是不能在函数中定义契约函数。尝试版本为1.6
@ExperimentalContracts
fun isNull(value: String ?= null): Boolean {
contract {
returns(true) implies (value != null)
}
return value != null
}
具体使用可以参考以下链接
JetBrains开发者日见闻(二)之Kotlin1.3的新特性(Contract契约与协程篇)
https://blog.csdn.net/u013064109/article/details/84782206