Количество элементов в списке отфильтрованных AngularJS

Конструкция, подобная x = x++;, указывает, что вы, вероятно, неправильно понимаете, что делает оператор ++:

// original code
int x = 7;
x = x++;

Давайте перепишем это, чтобы сделать то же самое, на основе удаления оператора ++ :

// behaves the same as the original code
int x = 7;
int tmp = x; // value of tmp here is 7
x = x + 1; // x temporarily equals 8 (this is the evaluation of ++)
x = tmp; // oops! we overwrote y with 7

Теперь давайте перепишем его, чтобы сделать (что я думаю) вам хотелось:

// original code
int x = 7;
x++;

Тонкость здесь в том, что ++ оператор изменяет переменная x , в отличие от выражения, такого как x + x, которое будет оценивать значение int, но оставить переменную x самой неизменной. Рассмотрим конструкцию как почтенный цикл for:

for(int i = 0; i < 10; i++)
{
    System.out.println(i);
}

Обратите внимание на i++ там? Это тот же оператор. Мы могли бы переписать этот цикл for как это, и он будет вести себя одинаково:

for(int i = 0; i < 10; i = i + 1)
{
    System.out.println(i);
}

В большинстве случаев я также рекомендую не использовать оператор ++ в больших выражениях. Из-за тонкости , когда он изменяет исходную переменную в сравнении с последующим приращением (++x и x++, соответственно), очень легко ввести тонкие ошибки, которые трудно отследить вниз.

20
задан ocodo 14 February 2013 в 01:05
поделиться