Re[4]: Выйти из двух циклов сразу
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.06.06 07:47
Оценка: +1
Здравствуйте, LeonGorbachev, Вы писали:

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

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

1. Не делать два цикла.
2. Не выходить из циклов.
http://www.smalltalk.ru | << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[5]: Выйти из двух циклов сразу
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.06.06 07: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
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[6]: Выйти из двух циклов сразу
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.06.06 23:05
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

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

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

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


Забыл четвертый... не использовать циклов!
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Выйти из двух циклов сразу
От: mike_sikalo Украина  
Дата: 13.06.06 09: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: Выйти из двух циклов сразу
От: _doctor Финляндия http://agilesoftwaredevelopment.com
Дата: 15.06.06 07: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 10:34
Оценка:
Здравствуйте, Pushkin, Вы писали:


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

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

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

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

По-моему, самый надёжный способ выйти из двух циклов — выйти по грамотно заданному условию, а не плодить говнище while true do, а потом спрашивать, а как мне из него выйти... =)
Re[7]: Выйти из двух циклов сразу
От: Quintanar Россия  
Дата: 15.06.06 10: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.Sobchuck Украина www.smalltalk.ru
Дата: 15.06.06 11: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
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.