gpt4 book ai didi

scala - 在这个循环中 'i' 变量是如何递增的?

转载 作者:行者123 更新时间:2023-12-03 18:17:58 25 4
gpt4 key购买 nike

下面的代码打印 0,1,2,3,4,5,6,7,8,9

for (i <- 0 until 10) {
println(i)

var 'i' 是如何递增的?我怀疑有一些隐含的事情发生,但检查“直到”的签名,它返回一个范围我不知道这是什么?

最佳答案

for在 scala 中不是循环,而是称为 comprehension 的东西.在您的情况下,它只是调用 Range.foreach , 因为 0 until 10创建一个 Range .然后它只是递归地调用您传递给 foreach 的函数,以获取范围中的每个值。

编辑 :

取决于你的for看起来,它会创建对 map 的嵌套调用, flatMap , foreach , filter ...

例如:

for {
x <- 0 until 10
y <- 0 until 10
} yield x * y

将被编译为
(0 until 10) flatMap { x =>
(0 until 10) map { y =>
x*y
}
}


for {
x <- 0 until 10
if x % 2 == 0
} yield x * 2

将被编译为类似
(0 until 10).filter { x =>
x % 2 == 0
}.map { x =>
x * 2
}

关于scala - 在这个循环中 'i' 变量是如何递增的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14261200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com