Когда - в то время как соответствующий?

В более новых версиях angularjs правильный ответ на этот вопрос заключается в использовании ng-if :

  • ( No items in this list yet! )
  • {{ item }}

Это решение не будет мерцать, когда список собирается загрузить либо потому что список должен быть определен и иметь длину 0 для отображения сообщения.

Вот плункер, чтобы показать его в использовании: http://plnkr.co/edit/in7ha1wTlpuVgamiOblS?p=preview

Подсказка: Вы также можете показать загрузочный текст или вертушка:

  
  • ( Loading... )
  • 12
    задан James McMahon 24 June 2009 в 17:43
    поделиться

    11 ответов

    Когда вам нужно что-то сделать хотя бы один раз, но вы не знаете, сколько раз перед запуском цикла.

    54
    ответ дан 2 December 2019 в 02:55
    поделиться

    Я обычно использую do-while, когда что-то должно произойти, но это не обязательно произойдет «правильно» с первого раза. Например:

    int x;
    do
    {
        x = random.next(100);
        cout << x << endl;
    } while (x != 13);
    

    В этом случае x, с которого вы начинаете, вообще не имеет значения, потому что он перезаписывается.

    2
    ответ дан 2 December 2019 в 02:55
    поделиться

    Никто еще не упомянул его использование в макросах C ...

    #define do_all(x) do{ foo(x); bar(x); baz(x); } while(0)
    

    тогда в коде вы можете указать

    do_all(a);
    
    • , что он выполняется ровно один раз и точка с запятой в конце вызова макроса завершает while (0);
    3
    ответ дан 2 December 2019 в 02:55
    поделиться

    при чтении из файла или ожидании установления соединения (в том числе другого взаимодействия с человеком), все, для чего количество итераций неизвестно априори (например, количество записей, возвращенных запрос sql), или когда вы выполняете шаги разного размера (например, читаете 1 или 5 строк из файла в зависимости от последней прочитанной), при просмотре всех комбинаций / перестановок объектов, всякий раз, когда условия цикла for становятся громоздкими

    0
    ответ дан 2 December 2019 в 02:55
    поделиться

    do while () зацикливается, пока условие истинно , но, с другой стороны, Паскаля повторяется до тех пор, пока не зацикливается, пока условие не будет ложным (оба будут выполняться хотя бы один раз).

    Когда я программирую на Паскале I , почти всегда использую повторять до .
    Когда я программирую на C ++, я почти всегда использую while () {} .

    Я не могу объяснить почему, но мне кажется, что это нормально . Странно?

    0
    ответ дан 2 December 2019 в 02:55
    поделиться

    Я использовал его раньше, если мне нужно было реализовать множество условных проверок, например, обработку формы ввода в 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 :)

    2
    ответ дан 2 December 2019 в 02:55
    поделиться

    Нечасто это лучший вариант, но есть один сценарий, когда вы должны сделать что-то хотя бы один раз, но дальнейшие итерации зависят от некоторого условия.

    do {
        //do something
    } while ( condition );
    
    3
    ответ дан 2 December 2019 в 02:55
    поделиться

    Это уместно, если вы хотите, чтобы ваше условие проверялось в конце выполнения цикла. Следовательно, цикл всегда будет выполняться хотя бы один раз, а затем он проверит, следует ли повторять его дальше.

    1
    ответ дан 2 December 2019 в 02:55
    поделиться

    Когда уместнее что-то сделать, а затем оценить логическое выражение ... или, как сказал Брайан ... когда вам нужно что-то сделать хотя бы один раз. Этот синтаксис перемещает оценку логического выражения после цикла, а не до цикла.

    0
    ответ дан 2 December 2019 в 02:55
    поделиться

    Каждый раз, когда то, что находится в цикле, необходимо выполнить хотя бы один раз.

    0
    ответ дан 2 December 2019 в 02:55
    поделиться

    Я долгое время считал, что do-while не так часто используется в языках, основанных на C, как должно быть потому, что повторное использование ключевого слова «while» неудобно и сбивает с толку. В Pascal's repeat-until не используются какие-либо ключевые слова со своей структурой while-begin-end.

    I '

    0
    ответ дан 2 December 2019 в 02:55
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: