我正在尝试以惯用的方式将以下Java代码转换为Kotlin:
for (Group group : groups) {
String groupName = group.getName();
if (groupName == null) {
warn("Group name is null for group " + group.getId());
continue;
}
...
}
我尝试了以下
for (group in groups) {
val groupName = group.name ?: run {
warn("Group name is null for group ${group.id}!")
continue
}
...
}
但是,这不会与错误一起编译:
所以我的问题是,有没有更好的方法可以在Kotlin中编写此代码?
最佳答案
通常,continue
也可以通过::filter
进行仿真。
但是由于在这种情况下您还需要警告,因此这使得经典的for
是最佳解决方案。
但是,还有其他选择。
groups.filter { group -> when(group.name) {
null -> {
warn("Group name is null for group ${group.id}!")
false
}
else -> true
}.for Each {
...
}
}
或使用
return@forEach
。但同样,在这种情况下,经典的
for
是最佳解决方案