Je suis nouveau à JavaFX. Je ne suis pas capable de comprendre pourquoi le code ci-dessous ne fonctionne pas.Pourquoi ce code "binding" ne fonctionne-t-il pas comme prévu dans JavaFX?
import javafx.util.Sequences;
def nums = [1..10];
var curr = 0;
var evenOrOdd = bind if (nums[curr] mod 2 == 0) "{nums[curr]} is an even number" else "{nums[curr]} is an odd number";
for (curr in [0..(sizeof nums -1)])
{
println("{evenOrOdd}");
}
Je reçois
1 is an odd number
1 is an odd number
1 is an odd number
1 is an odd number
1 is an odd number
1 is an odd number
1 is an odd number
1 is an odd number
1 is an odd number
1 is an odd number
Si je change le code pour
import javafx.util.Sequences;
def nums = [1..10];
var curr = 0;
var evenOrOdd = bind if (nums[curr] mod 2 == 0) "{nums[curr]} is an even number" else "{nums[curr]} is an odd number";
for (i in [0..(sizeof nums -1)])
{
curr = i;
println("{evenOrOdd}");
}
Je reçois la sortie correcte:
1 is an odd number
2 is an even number
3 is an odd number
4 is an even number
5 is an odd number
6 is an even number
7 is an odd number
8 is an even number
9 is an odd number
10 is an even number
De toute évidence, l'incrément de compteur dans le boucle n'est pas traitée comme un changement de valeur et le b L'expression ound n'est pas réévaluée.
Quelqu'un peut-il s'il vous plaît expliquer le concept derrière ce comportement?
Merci Tim. Très belle explication. – Rahul