gpt4 book ai didi

lambda - 为什么在 lambda 中使用++i 而不是 i++

转载 作者:行者123 更新时间:2023-12-02 06:30:05 25 4
gpt4 key购买 nike

我碰巧知道,在下面的表达式中,使用i++会导致无限流,i将始终为0。我很困惑是因为我认为i++ 返回的值没有被使用,即便如此,它也不应该中断之后的 i 增量。

IntStream.iterate(0, i-> i<10, i-> ++i).forEach(....)

最佳答案

通过查看Java 9的API IntStream : http://download.java.net/java/jdk9/docs/api/java/util/stream/IntStream.html#iterate-int-java.util.function.IntPredicate-java.util.function.IntUnaryOperator-

最后一个函数(在您的例子中为 i -> ++i )是确定下一个值是什么。

如果你输入i->i++ ,假设它是后缀增量运算符,i++计算结果为i增量之前。这意味着它总是返回相同的值(在您的情况下为种子 0 )。因此它的工作原理就像您输入 i -> i 一样。请注意,Java 中的参数是按值传递的。因此,您在 lambda 中的增量不会影响调用者。

因此,hasNext谓词(第二个参数,i->i<10 在您的情况下)始终评估为 true,因此为您提供全零的无限流。

关于lambda - 为什么在 lambda 中使用++i 而不是 i++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449945/

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