110 11 12 13 14 15 16 17 18 19 20
Re[4]: Выйти из двух циклов сразу в избранное  новое горячее всё    подписка   модер. 
От: Andrei N.Sobchuckwww.smalltalk.ru
Дата: 05.06.06 06:47
Оценка: +1
Здравствуйте, LeonGorbachev, Вы писали:

LG>я вот как раз и не хочу через исключения. И не хочу гоу-ту.

LG>Чего делать?

1. Не делать два цикла.
2. Не выходить из циклов.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate!
Re[5]: Выйти из двух циклов сразу в избранное  новое    модер. 
От: Andrei N.Sobchuckwww.smalltalk.ru
Дата: 05.06.06 06:51
Здравствуйте, Andrei N.Sobchuck, Вы писали:

LG>>я вот как раз и не хочу через исключения. И не хочу гоу-ту.

LG>>Чего делать?

ANS>1. Не делать два цикла.

ANS>2. Не выходить из циклов.

Забыл 3-й вариант — использовать return.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate!
Re[6]: Выйти из двух циклов сразу в избранное  новое    модер. 
От: VladD2 модераторwww.k-press.ru/cs
Дата: 11.06.06 22:05
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>>1. Не делать два цикла.

ANS>>2. Не выходить из циклов.

ANS>Забыл 3-й вариант — использовать return.


Забыл четвертый... не использовать циклов!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Вышел Nemerle 1.0


Все что нас не убивает, потом сильно об этом жалеет :).
Re: Выйти из двух циклов сразу в избранное  новое    модер. 
От: mike_sikalo 
Дата: 13.06.06 08:03
Здравствуйте, LeonGorbachev, Вы писали:



LG>
LG>while(1)
LG>{
LG>  for(int i = 0; i < 100; i++)
LG>  {
LG>    if(i == 77)
LG>      // вот тут хочу выйти вообще из всех циклов - из  for и из while
LG>  }
LG>}
LG>


LG>Как это сделать?


вынеси в отдельную процедуру и напиши return
Re: Выйти из двух циклов сразу в избранное  новое    модер. 
От: _doctorhttp://agilesoftwaredevelopment.com
Дата: 15.06.06 06:52
Здравствуйте, LeonGorbachev, Вы писали:

LG>
LG>while(1)
LG>{
LG>  for(int i = 0; i < 100; i++)
LG>  {
LG>    if(i == 77)
LG>      // вот тут хочу выйти вообще из всех циклов - из  for и из while
LG>  }
LG>}
LG>


LG>Как это сделать?


Лично я стараюсь переписывать куски кода, которые мне не очень нравятся как-то по другому (структурно). Например, так:
/**
* @return true when no more cycles are needed
*/
bool doAtomicProcessing()
  {
  for(int i = 0; i < 100; i++)
    {
    if(i == 77)
      return true
    }
  return false;
  }
  
bool exit = false;
do exit = doAtomicProcessing 
    while (!exit);
Chief Software Engineer,
Scrum Master, Symbian
Re[2]: Выйти из двух циклов сразу в избранное  новое    модер. 
От: waddayamin 
Дата: 15.06.06 09:34
Здравствуйте, Pushkin, Вы писали:


P>Безумно высокое количество откликов на этот в общем-то невинный вопрос говорит о том,

P>что он попал в больное место — НУ НЕТ здесь нормального способа выйти.
P>Почему бы нам всем не признать, что разработчики языка лоханулись, и просто ЗАБЫЛИ
P>дать нам эту возможность.
P>Ведь это было так просто — какое-нибудь ключевое слово типа breakbreak или break2.
P>Предлагаю написать возмущённое письмо

P>ЗЫ: Меня давно мучит вопрос, а нельзя ли это как-то своими силами сделать —

P>задефайнить как-нибудь, пусть даже и монстра какого-нибудь ассемблерного,
P>но чтоб потом одно слово BREAKBREAK писать

По-моему, самый надёжный способ выйти из двух циклов — выйти по грамотно заданному условию, а не плодить говнище while true do, а потом спрашивать, а как мне из него выйти... =)
Re[7]: Выйти из двух циклов сразу в избранное  новое    модер. 
От: Quintanar 
Дата: 15.06.06 09:50
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Andrei N.Sobchuck, Вы писали:


ANS>>>1. Не делать два цикла.

ANS>>>2. Не выходить из циклов.

ANS>>Забыл 3-й вариант — использовать return.


VD>Забыл четвертый... не использовать циклов!


5) использовать continuations


....
call/cc exit {
   while (..) {
     ...
     while (..) {
       ...
       exit 0;
     }
     ...
   }
}

или

reset {
   while (..) {
     ...
     while (..) {
       ...
       shift { };
     }
     ...
   }
}
Re[8]: Выйти из двух циклов сразу в избранное  новое    модер. 
От: Andrei N.Sobchuckwww.smalltalk.ru
Дата: 15.06.06 10:55
Здравствуйте, Quintanar, Вы писали:

ANS>>>>1. Не делать два цикла.

ANS>>>>2. Не выходить из циклов.

ANS>>>Забыл 3-й вариант — использовать return.


VD>>Забыл четвертый... не использовать циклов!


Q>5) использовать continuations


Хе-хе. Я это и подразумевал под п.2.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate!
110 11 12 13 14 15 16 17 18 19 20