我需要为课程制作一个计算生日悖论的程序。现在,我在尝试学习Kotlin并且遇到了一小段代码的问题:
val checkSet = mutableSetOf<Int>()
generateSequence{ Random.nextInt(n)}.forEach {
if(!checkSet.add(it)) {
return@outForeach
}
}
outForeach@
sum += checkSet.size
正如你所看到的,我正在尝试使用一个无限序列来实现这个功能。但是 Kotlin 不接受此操作,因为 outForeach 是一个未解决的引用。但是下面这种方法也不起作用:
val checkSet = mutableSetOf<Int>()
generateSequence{ Random.nextInt(n)}.forEach {
if(!checkSet.add(it)) {
return@forEach
}
}
sum += checkSet.size
这只会重新启动forEach循环。是否有一种方法可以实现类似于forEachUntil的东西?
附注:我意识到这看起来很像这个问题:'return' doesn't jump out of forEach in Kotlin,只是我不太理解答案,也不知道它是否适用于这里。此外,对我来说,实现forEachUntil的方式更加优雅。