Koray Brigade:
Le code naïf que j'ai est:
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);
}
}
où mon attente était de voir ce qui suit dans la console:
[0, 1, 2, 3, 4]
Mais le réel est:
[0, 0, 0, 0, 0]
Il est probablement quelque chose de très simple, mais qu'est-ce que je manque?
flocons:
Vous devez retourner la valeur incrémentée. Vous Postfix une variable locale incrémenté et retourné la valeur non-incrémentée. Utilisez ++i
pasi++
final List<Integer> ints = new ArrayList<>();
IntStream.iterate(0, i -> ++i).limit(5).forEach(val -> ints.add(val));
System.out.println(ints);
Modifier Voir le post de John Kugelman sur l' utilisation des opérations non lors de la programmation dans modificatrices un style fonctionnel. L' utilisation i + 1
va créer une nouvelle primitive et non muter la variable de paramètres.