В более новых версиях angularjs правильный ответ на этот вопрос заключается в использовании ng-if
:
- ( No items in this list yet! )
- {{ item }}
Это решение не будет мерцать, когда список собирается загрузить либо потому что список должен быть определен и иметь длину 0 для отображения сообщения.
Вот плункер, чтобы показать его в использовании: http://plnkr.co/edit/in7ha1wTlpuVgamiOblS?p=preview
Подсказка: Вы также можете показать загрузочный текст или вертушка:
( Loading... )
Когда вам нужно что-то сделать хотя бы один раз, но вы не знаете, сколько раз перед запуском цикла.
Я обычно использую do-while, когда что-то должно произойти, но это не обязательно произойдет «правильно» с первого раза. Например:
int x;
do
{
x = random.next(100);
cout << x << endl;
} while (x != 13);
В этом случае x, с которого вы начинаете, вообще не имеет значения, потому что он перезаписывается.
Никто еще не упомянул его использование в макросах C ...
#define do_all(x) do{ foo(x); bar(x); baz(x); } while(0)
тогда в коде вы можете указать
do_all(a);
при чтении из файла или ожидании установления соединения (в том числе другого взаимодействия с человеком), все, для чего количество итераций неизвестно априори (например, количество записей, возвращенных запрос sql), или когда вы выполняете шаги разного размера (например, читаете 1 или 5 строк из файла в зависимости от последней прочитанной), при просмотре всех комбинаций / перестановок объектов, всякий раз, когда условия цикла for становятся громоздкими
do while ()
зацикливается, пока условие истинно , но, с другой стороны, Паскаля повторяется до тех пор, пока
не зацикливается, пока условие не будет ложным (оба будут выполняться хотя бы один раз).
Когда я программирую на Паскале I , почти всегда использую повторять до
.
Когда я программирую на C ++, я почти всегда использую while () {}
.
Я не могу объяснить почему, но мне кажется, что это нормально . Странно?
Я использовал его раньше, если мне нужно было реализовать множество условных проверок, например, обработку формы ввода в php. Вероятно, не лучшая практика, но она более читабельна, чем многие альтернативы:
do {
if ( field1_is_invalid ) {
$err_msg = "field1 is invalid"; break;
}
if ( field2_is_invalid ) {
$err_msg = "field2 is invalid"; break;
}
.. check half a dozen more things ..
// Only executes if all checks succeed.
do_some_updates();
} while (false)
Кроме того, я полагаю, что технически это не цикл. Больше похоже на способ избежать использования GOTO :)
Нечасто это лучший вариант, но есть один сценарий, когда вы должны сделать что-то хотя бы один раз, но дальнейшие итерации зависят от некоторого условия.
do {
//do something
} while ( condition );
Это уместно, если вы хотите, чтобы ваше условие проверялось в конце выполнения цикла. Следовательно, цикл всегда будет выполняться хотя бы один раз, а затем он проверит, следует ли повторять его дальше.
Когда уместнее что-то сделать, а затем оценить логическое выражение ... или, как сказал Брайан ... когда вам нужно что-то сделать хотя бы один раз. Этот синтаксис перемещает оценку логического выражения после цикла, а не до цикла.
Каждый раз, когда то, что находится в цикле, необходимо выполнить хотя бы один раз.
Я долгое время считал, что do-while не так часто используется в языках, основанных на C, как должно быть потому, что повторное использование ключевого слова «while» неудобно и сбивает с толку. В Pascal's repeat-until не используются какие-либо ключевые слова со своей структурой while-begin-end.
I '