为什么Kotlin中的标签未返回此代码
为什么此代码不会从为什么Kotlin中的标签未返回此代码,kotlin,Kotlin,为什么此代码不会从ints2.forEach返回,但每次都会输出level1 xx==? 当我将标签let@设置为ints2.forEach时,没有区别 fun foo() { val ints = Array(5, {i->i}) ints.forEach let@ { println("level 1 $it ====") val ints2 = Array(3, {i->i}) ints2.forEach {
ints2.forEach返回,但每次都会输出level1 xx==
?
当我将标签let@
设置为ints2.forEach
时,没有区别
fun foo() {
val ints = Array(5, {i->i})
ints.forEach let@ {
println("level 1 $it ====")
val ints2 = Array(3, {i->i})
ints2.forEach {
if (it == 2) return@let
println("level 2 $it")
}
}
}
fun main(args: Array<String>) {
foo()
}
fun foo(){
val ints=Array(5,{i->i})
ints.forEach let@{
println(“级别1$it==”)
val ints2=数组(3,{i->i})
ints2.forEach{
如果(it==2)return@let
println(“2级$it”)
}
}
}
趣味主线(args:Array){
foo()
}
为什么此代码不从ints.forEach返回并将多次输出“level 1 xx==”
通过返回标签(@let
,在您的例子中),它只从forEach
中的lambda表达式返回。因此,您的foo()
相当于下面的代码(使用匿名函数而不是标签)。这就是为什么仍然会为数组中的每个值执行forEach
块的原因。你可以找到更多的细节
当我将标签“let@”设置为
ints2.forEach
原因同上。通过将@let
标签设置为ints2.forEach
,此内部forEach
块仍在it==2
之前执行两次
为什么此代码不从ints.forEach返回并将多次输出“level 1 xx==”
通过返回标签(@let
,在您的例子中),它只从forEach
中的lambda表达式返回。因此,您的foo()
相当于下面的代码(使用匿名函数而不是标签)。这就是为什么仍然会为数组中的每个值执行forEach
块的原因。你可以找到更多的细节
当我将标签“let@”设置为
ints2.forEach
原因同上。通过将@let
标签设置为ints2.forEach
,此内部forEach
块仍在it==2
之前执行两次 你能粘贴预期的输出吗?我没有完全理解你的问题。你能粘贴预期的输出吗?我没有完全理解你的问题
fun foo() {
val ints = Array(5, {i->i})
ints.forEach(fun(it: Int) {
println("level 1 $it ====")
val ints2 = Array(3, {i->i})
ints2.forEach {
if (it == 2) return
println("level 2 $it")
}
})
}