Koray brigada:
El código ingenua que tengo es:
class ${
public static void main(String[] _) {
final List<Integer> ints = new ArrayList<>();
IntStream.iterate(0, i -> i++).limit(5).forEach(val -> ints.add(val));
System.out.println(ints);
}
}
donde mi expectativa era ver lo siguiente en la consola:
[0, 1, 2, 3, 4]
Pero el real es:
[0, 0, 0, 0, 0]
Probablemente es algo muy simple, pero lo que me estoy perdiendo?
escamillas
Es necesario devolver el valor incrementado. Usted Postfix incrementa una variable local y devuelve el valor no incrementa. utilizar ++i
noi++
final List<Integer> ints = new ArrayList<>();
IntStream.iterate(0, i -> ++i).limit(5).forEach(val -> ints.add(val));
System.out.println(ints);
Editar el post de John Ver Kugelman sobre el uso de las operaciones no mutantes cuando se programa con un estilo funcional. Usando i + 1
creará una nueva primitiva y no mutar la variable de parámetros.