如何解决Kotlin什么时候应该使用主题
我对kotlin的when
声明很感兴趣。它似乎几乎像Lisp cond
一样强大,但不完全一样。在kotlin网站here上的一个示例中,您可以看到没有主题。您只需列出布尔表达式,然后对第一个成功的表达式进行求值,就像lisp的cond
一样。
when {
handler == null -> print("null")
else -> print("handler is valid")
}
但这会生成一个编译器警告,提示何时应使用'with'主题。如何在不生成编译器警告的情况下使用此构造?
解决方法
在这些情况下,最好使用'with'主题(您可以在何时传递的参数)。因此,没有警告的代码将是
when (handler) {
null -> print("null")
else -> print("handler is valid")
}
通常,如果您有两种情况,最好使用if。但是请考虑更多情况。如果必须将处理程序用于其他条件,则将处理程序作为主题传递将使您的代码更整洁。 (不确定是否应该对此产生任何性能影响)
,我想我明白了。
编译器很聪明,非常聪明。它认识到我的when
仅使用一个变量 handler 。警告告诉我,该示例中应将变量用作when
的主题:
when (handler) {
it == null -> print("null")
else -> print("handler is valid")
}
但是,如果我使用多个变量,警告就会消失。编译器似乎认识到主题没有意义。这是一个示例:
when {
firstHandler == null -> print("first handler is null")
secondHandler == null -> print("second handler is null")
else -> print("handlers are both valid")
}
没有警告,因为没有单个主题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。