我正在尝试以惯用的方式将以下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是最佳解决方案

10-07 19:17
查看更多