angular2 Наблюдаемое свойство 'debouceTime' не существует для типа 'Observable '

Инструкция:

x = x++;

эквивалентна:

tmp = x;   // ... this is capturing the value of "x++"
x = x + 1; // ... this is the effect of the increment operation in "x++" which
           //     happens after the value is captured.
x = tmp;   // ... this is the effect of assignment operation which is
           //     (unfortunately) clobbering the incremented value.

Короче говоря, инструкция не имеет никакого эффекта.

Ключевые моменты:

  • Значение выражения postfix increment / decment является значением операнда до , когда происходит приращение / декремент. (В случае формы префикса значение - это значение операнда после операции;)
  • RHS выражения присваивания полностью оценивается (включая любые приращения, декременты и / или другие побочные эффекты) до значение присваивается LHS.

Обратите внимание, что в отличие от C и C ++ порядок оценки выражения в Java полностью определен, и нет места для изменения конкретной платформы. Компиляторам разрешено только изменять порядок операций, если это не изменит результат выполнения кода с точки зрения текущего потока. В этом случае компилятору будет разрешено оптимизировать весь оператор, потому что можно доказать, что он не работает.


Если это еще не очевидно:

  • "x = x ++;" почти наверняка является ошибкой в ​​любой программе.
  • OP (для исходного вопроса!), вероятно, означал «x ++»; [x9]
  • Заявления, которые объединяют auto inc / декремент и присваивание на одной и той же переменной, трудно понять, и , поэтому следует избегать независимо от того, их правильности . Просто не нужно писать такой код.

Хотелось бы надеяться, что такие проверки кода, как FindBugs и PMD, будут отображаться как подозрительные.

20
задан Radim Köhler 24 June 2016 в 04:55
поделиться