Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Выход из двух (n?) циклов / 5 сообщений из 5, страница 1 из 1
02.08.2014, 00:29
    #38711294
eduard93
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из двух (n?) циклов
У меня есть такой метод, в нём два цикла:ClassMethod DoubleExcape()
{
  for i=1:1:5 
  { 
    for j=1:1:5 
    {     
      write "i=",i,"  j=",j,!
    }
  }
}Я хочу, в случае если во внутреннем цикле выполняется какое-либо условие (j=3), перейти к следующему элементу внешнего цикла, у меня получилось реализовать это двумя методами, но ни один из них мне не нравится.

С помощью goto:ClassMethod DoubleExcapeGoto()
{
  for i=1:1:5 
  { 
    for j=1:1:5 
    {     
      goto:j=3 fail
      write "i=",i,"  j=",j,!
    }
fail
  }
}
И с помощью манипуляции переменной цикла:ClassMethod DoubleExcapeIf()
{
  for i=1:1:5 
  { 
    for j=1:1:5 
    {     
      if j=3 
      {
        set j=5
        continue
      }
      write "i=",i,"  j=",j,!
    }
  }
}
Можно сделать это как-то более оптимально? Как с continue, но для большего внешнего цикла:ClassMethod DoubleExcapeContinue()
{
  for i=1:1:5 
  { 
    for j=1:1:5 
    {     
      continue:j=3
      write "i=",i,"  j=",j,!
    }
  }
}
...
Рейтинг: 0 / 0
02.08.2014, 00:49
    #38711296
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из двух (n?) циклов
Простой quit внутри цикла, будет просто выходом на верхний уровень т.е. во внешний цикл в вашем случае
...
Рейтинг: 0 / 0
02.08.2014, 17:36
    #38711418
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из двух (n?) циклов
eduard93 ,
ClassMethod DoubleExcape()
{
  for i=1:1:5 
  { 
    for j=1:1:5 
    {     
       quit:j=3
      write "i=",i,"  j=",j,!
    }
  }
} Exiting a FOR Loop
...
Рейтинг: 0 / 0
02.08.2014, 22:57
    #38711505
eduard93
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из двух (n?) циклов
DAiMor, servit
Спасибо.
...
Рейтинг: 0 / 0
03.08.2014, 17:11
    #38711629
Шваров Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выход из двух (n?) циклов
servit eduard93 ,
ClassMethod DoubleExcape()
{
  for i=1:1:5 
  { 
    for j=1:1:5 
    {     
       quit:j=3
      write "i=",i,"  j=",j,!
    }
  }
} Exiting a FOR Loop

Тут же можно вспомнить вновь появившуюся команду return , которую удобно использовать, если нужно совсем выйти из метода несмотря на любой уровень вложенности циклов.
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Выход из двух (n?) циклов / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]