gpt4 book ai didi

kotlin - 如果主题不为空,如何判断扩展方法返回非空

转载 作者:行者123 更新时间:2023-12-01 12:05:56 27 4
gpt4 key购买 nike

我实现了以下方法:

private fun String?.replaceHolder(item: String): String? {
return this?.replace("\$deployUnit", item)
}

使用它的代码如下所示:

val a = "aaa".replaceHolder("fff")

但是,a 的推断类型是 String?。对于契约(Contract),我可以说,如果返回值不为 null,那么 subject was is not null 就像那样:

@ExperimentalContracts
private fun String?.replaceHolder(item: String): String? {
contract {
returnsNotNull() implies (this@replaceHolder != null)
}
return this?.replace("\$deployUnit", item)
}

有没有可能相反呢?我的意思是推断 a 的类型不为空?还有其他方法吗?

最佳答案

如果我理解你的话,这就是你想要的

private fun <T: String?> T.replaceHolder(item: String): T {
return this?.replace("\$deployUnit", item) as T
}

T 扩展字符串?意味着 T 类型可以是 String 或 null 或两者都是,并且每个类型 T 都是,函数也返回该类型

关于kotlin - 如果主题不为空,如何判断扩展方法返回非空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56934677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com