【发布时间】:2019-11-17 22:54:21
【问题描述】:
我已经实现了以下方法:
private fun String?.replaceHolder(item: String): String? {
return this?.replace("\$deployUnit", item)
}
使用它的代码如下所示:
val a = "aaa".replaceHolder("fff")
但是,a 的推断类型是String?。
对于合同,我可以说如果返回值不为空,那么主题不为空:
@ExperimentalContracts
private fun String?.replaceHolder(item: String): String? {
contract {
returnsNotNull() implies (this@replaceHolder != null)
}
return this?.replace("\$deployUnit", item)
}
可以说反话吗?我的意思是推断a的类型不为空?还有其他方法吗?
【问题讨论】:
-
我自己的偏好可能是在
String上定义它,并在需要时明确使用?.。
标签: kotlin type-inference