kotlin - 如何在 Kotlin 中使用 WHEN 表达式?
问题描述
我在https://kotlinlang.org/docs/reference/control-flow.html中看到了这个片段
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}
我很困惑,不知道是第一种情况x.parseInt(s)
还是其他情况。
我问的原因是因为,我尝试了以下
when(myString)) {
isNullOrBlank() -> removeValue()
else -> setValue(myString)
}
它失败了isNullOrBlack()
。
我尝试了以下也失败了。
when(myString)) {
it.isNullOrBlank() -> removeValue()
else -> setValue(it)
}
解决方案
第一种情况是检查是否x
等于调用的结果parseInt(x)
,这不是 的函数x
。
任何作为表达式求值的 case 都会检查是否与x
. 没有办法创建在 when 语句的目标上调用函数并且如果它返回 true 则通过的情况。使用目标时,您唯一的选择是检查它的相等性,检查它是否是in
某物,或者检查它是否是is
某物。
要执行您正在尝试的操作,您需要一个没有目标的 when 语句。
when {
myString.isNullOrBlank() -> removeValue()
else -> setValue(myString)
}
推荐阅读
- angular - 如何在 Angular 中创建与另一个组件关联的我自己的组件生命周期回调?
- php - PHP 语法 ?>
我无法弄清楚 ?> <? 此代码中正在执行语法。我已经搜索了 php 语法页面,这不是一个开始或结束标记,也不是一个简短的打开标记。没有它,代码将无法编译,并且我在后面的大括号中得到了一种奇怪的颜色。
if(isset($_POST)){?> <form method="POST" action="Form_Index.php">
- android - 在同步函数中等待异步结果
- sql-server - Get-SqlErrorLog 电子邮件备份失败
- html - 如何从 html 文档中批量删除此处的整个文本
- flutter - 当您返回更改第一个下拉菜单时,取决于 Dropdown 失败断言错误
- python - 为什么我实现的mergeSort有O(n^2)?
- flutter - 如何在 Flutter 中使用 ListTile 显示列内的项目列表
- gnuradio - gnuradio 标记流到 PDU 块中缺少长度标记
- typescript - Jest 和 Typescript:覆盖默认模拟实现的推荐方法