Привет всем!
Собственно, сабж. Читала книгу по C# и там описание оператора goto. И вдруг всплыл этот наболевший вопрос в голове. Как Вы бы вышли сразу из нескольких циклов? Мне приходят в голову два варианта — с помощью опять же goto или флагами. И то, и другое некрасиво вроде... Может, еще есть какие извращенные способы, которые кто-то придумал?
Здравствуйте, XJess, Вы писали:
XJ>Привет всем! XJ>Собственно, сабж. Читала книгу по C# и там описание оператора goto. И вдруг всплыл этот наболевший вопрос в голове. Как Вы бы вышли сразу из нескольких циклов? Мне приходят в голову два варианта — с помощью опять же goto или флагами. И то, и другое некрасиво вроде... Может, еще есть какие извращенные способы, которые кто-то придумал?
По goto за конец цикла и не страдать.
Ещё можно вложенные циклы в отдельный метод завернуть и выходить из него по return. Некоторым иногда кажется, что так лучше.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, XJess, Вы писали:
XJ>Привет всем! XJ>Собственно, сабж. Читала книгу по C# и там описание оператора goto. И вдруг всплыл этот наболевший вопрос в голове. Как Вы бы вышли сразу из нескольких циклов? Мне приходят в голову два варианта — с помощью опять же goto или флагами. И то, и другое некрасиво вроде... Может, еще есть какие извращенные способы, которые кто-то придумал?
Здравствуйте, XJess, Вы писали:
XJ>Привет всем! XJ>Собственно, сабж. Читала книгу по C# и там описание оператора goto. И вдруг всплыл этот наболевший вопрос в голове. Как Вы бы вышли сразу из нескольких циклов? Мне приходят в голову два варианта — с помощью опять же goto или флагами. И то, и другое некрасиво вроде... Может, еще есть какие извращенные способы, которые кто-то придумал?
Здравствуйте, XJess, Вы писали:
XJ>Привет всем! XJ>Собственно, сабж. Читала книгу по C# и там описание оператора goto. И вдруг всплыл этот наболевший вопрос в голове. Как Вы бы вышли сразу из нескольких циклов? Мне приходят в голову два варианта — с помощью опять же goto или флагами. И то, и другое некрасиво вроде... Может, еще есть какие извращенные способы, которые кто-то придумал?
1) throw
2) оформить логику циклов как отдельную функцию, и выйти по return
3) использовать goto и быстро выпить йаду
Здравствуйте, los puercos, Вы писали:
LP>Здравствуйте, XJess, Вы писали:
XJ>>Привет всем! XJ>>Собственно, сабж. Читала книгу по C# и там описание оператора goto. И вдруг всплыл этот наболевший вопрос в голове. Как Вы бы вышли сразу из нескольких циклов? Мне приходят в голову два варианта — с помощью опять же goto или флагами. И то, и другое некрасиво вроде... Может, еще есть какие извращенные способы, которые кто-то придумал?
LP>1) throw
А тут не пить ядок? LP>2) оформить логику циклов как отдельную функцию, и выйти по return
Тут тоже яду не нужно? LP>3) использовать goto и быстро выпить йаду
А вас switch не смущает?
Здравствуйте, blackhearted, Вы писали:
B>Здравствуйте, los puercos, Вы писали:
LP>>Здравствуйте, XJess, Вы писали:
XJ>>>Привет всем! XJ>>>Собственно, сабж. Читала книгу по C# и там описание оператора goto. И вдруг всплыл этот наболевший вопрос в голове. Как Вы бы вышли сразу из нескольких циклов? Мне приходят в голову два варианта — с помощью опять же goto или флагами. И то, и другое некрасиво вроде... Может, еще есть какие извращенные способы, которые кто-то придумал?
LP>>1) throw B>А тут не пить ядок?
Разве что немного. Не самое лучшее решение, привел "за компанию"
LP>>2) оформить логику циклов как отдельную функцию, и выйти по return B>Тут тоже яду не нужно?
Нет, тут не нужно. Можно йогурт.
LP>>3) использовать goto и быстро выпить йаду B>А вас switch не смущает?
Смущает, очень. Краснею, смущаюсь и использую что-нибудь типа Visitor или Command
Здравствуйте, los puercos, Вы писали:
LP>>>3) использовать goto и быстро выпить йаду B>>А вас switch не смущает? LP>Смущает, очень. Краснею, смущаюсь и использую что-нибудь типа Visitor или Command
Здравствуйте, blackhearted, Вы писали:
B>ПГМ ? B>PS П == паттернизм.
По-русски это называется "шаблонное мышление"
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Brutalix, Вы писали:
B>Здравствуйте, okman, Вы писали:
O>>Исключения.
B>О, мьсе понимает толк в извращениях!
кстати, смех смехом, но разок я именно так и сделал. Не для выхода из циклов, а для реализации длинного и тупого алгоритма, в котором ошибка на каждом шаге приводила к завершению работы процедуры. Просто return не прокатывал, потому как надо было выполнить еще пару действий. Решил не плодить дерева if-ов, а сделать линейный алгоритм с выходом по исключениям.
Здравствуйте, los puercos, Вы писали:
LP>>>3) использовать goto и быстро выпить йаду B>>А вас switch не смущает? LP>Смущает, очень. Краснею, смущаюсь и использую что-нибудь типа Visitor или Command
да я гдето видел написаный на ООП "Hello World"
не кажеться что всему свое место? и не стоит все под одно "чисать"
Здравствуйте, los puercos, Вы писали:
LP>>>3) использовать goto и быстро выпить йаду B>>А вас switch не смущает? LP>Смущает, очень. Краснею, смущаюсь и использую что-нибудь типа Visitor или Command
а вот не надо делать сложно (и "красиво") там, где можно просто. Такие вот авторы напишут, а потом другому что-нибудь поправить или добавить в код приходится. И начинается: шаблоны, сигналы, мапперы, визиторы, макросы.... вплоть до того, что есть у класса метод, а где объявлен и определен — не найти, ибо за шаблонами и макросами спрятан (это из последнего, но я ранее с таким же сталкивался)....
Здравствуйте, los puercos, Вы писали:
LP>>>3) использовать goto и быстро выпить йаду B>>А вас switch не смущает? LP>Смущает, очень. Краснею, смущаюсь и использую что-нибудь типа Visitor или Command
Господа, у вас плохо с ч/ю. Кто не понял — это был такой толстый сарказм.
switch — это прекрасно, пока их не становится 2, 3 и так далее для обработки одной и той же последовательности кейсов.
А вот goto must die
Здравствуйте, March_rabbit, Вы писали:
M_>кстати, смех смехом, но разок я именно так и сделал. Не для выхода из циклов, а для реализации длинного и тупого алгоритма, в котором ошибка на каждом шаге приводила к завершению работы процедуры. Просто return не прокатывал, потому как надо было выполнить еще пару действий. Решил не плодить дерева if-ов, а сделать линейный алгоритм с выходом по исключениям.
А почему не сделать так:
int длинный_и_тупой_алгоритм() {
тупые_вычисления_1();
if (шит_хаппен) goto приехали;
тупые_вычисления_2();
if (шит_хаппен) goto приехали;
тупые_вычисления_3();
if (шит_хаппен) goto приехали;
тупые_вычисления_4();
if (шит_хаппен) goto приехали;
тупые_вычисления_5();
if (шит_хаппен) goto приехали;
усё_в_упорядке();
приехали:
return 0;
}
On 13.10.2010 16:55, XJess wrote:
Как Вы бы вышли сразу из нескольких > циклов? Мне приходят в голову два варианта — с помощью опять же goto или > флагами.
Здравствуйте, blackhearted, Вы писали:
B>Здравствуйте, los puercos, Вы писали:
LP>>>>3) использовать goto и быстро выпить йаду B>>>А вас switch не смущает? LP>>Смущает, очень. Краснею, смущаюсь и использую что-нибудь типа Visitor или Command
B>ПГМ ? B>PS П == паттернизм.
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, blackhearted, Вы писали:
B>>ПГМ ? B>>PS П == паттернизм.
E>По-русски это называется "шаблонное мышление"
А кто сказал, что "шаблонное мышление" — это плохо?
Хинт: стремление применять шаблоны там где можно и нельзя шаблонным мышлением не является.