java - 在 Kotlin 的运行 block 中继续

标签 java loops kotlin continue

我正在尝试以惯用的方式将以下 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
    }
    ...
}

但是这不会编译错误:

'break' or 'continue' jumps across a function or class boundary

所以我的问题是,有没有更好的方法用 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 是最好的解决方案

关于java - 在 Kotlin 的运行 block 中继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51373484/

相关文章:

java - 在Java中_not_调用父类(super class)构造函数的任何方法?

javascript - for 循环中的 onClick 未触发

Javascript 以循环方式遍历 12 部分数组

android - 在不同 fragment 上使用相同的 View 模型

dictionary - 在 Kotlin 中将 `Throwable?` 映射到 `Result<Unit>`

elasticsearch - 在 Kotlin 中,如何将 Kovenant Promise 与 Elasticsearch 异步响应集成?

java - 传递字符串时 JNI 和 Java 命名约定重要吗

java - Spring Boot 同一端点的多种请求类型

java - 如何修复 "Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installed"

Android VideoView重复