Kotlin合同对另一个属性/功能有影响
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin合同对另一个属性/功能有影响相关的知识,希望对你有一定的参考价值。
是否有可能与Kotlin合同使这个智能广播成为可能? 假设我有地图的跟随扩展功能
fun<K, V> Maps<K, V>.contains(k : K) : Boolean
{
//simply check for map containing key
}
在调用该方法之后,我希望将此调用转换为NotNull:
if(map.contains(key))
{
map.get(key).callAnyMethod()
//smartcast get(key) to not null
}
答案
你现在不能用合同做这个(旁注:如果他们报道这个案子,我会感到惊讶)。但是,标准库让您了解了几种不同的方法!
假设你有一个Map
,你可以在它上面调用containsKey
(如果你现在的那样排序)。知道在这种情况下“A”不为空,我们可以使用.getValue("A")
从地图中获取非空值。
val map = mapOf("A" to "B")
if(map.containsKey("A")) {
println(map.getValue("A").toLowerCase())
}
请注意,如果您使用实际为null的值调用.getValue()
,您将获得NoSuchElementException
。
另一个更惯用的方法是使用let
,如果值不为null,它将只执行块:
map["A"]?.let {
println(it.toLowerCase())
}
在这个例子中,如果你愿意,我们可以用["A"]
替换.get("A")
。
以上是关于Kotlin合同对另一个属性/功能有影响的主要内容,如果未能解决你的问题,请参考以下文章
Android:片段在活动结果合同中未收到 RESULT_OK