Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, _hum_, Вы писали:
__>>Так что, товарищи, кто еще так же, как и я, заблуждался, будьте внимательны:
CS>На вот еще для просветления:
CS>http://www.codeproject.com/Tips/29524/Generators-in-C
да, спасибо. это начинает прояснять ситуацию с тем, где же, действительно, может быть полезна эта фича.
подводя итог:
1) switch/case — не аналог if, а аналог динамического goto. тот факт, что многие его таким не воспринимают (в том числе и я до недавнего времени), думаю, является результатом того, что в большинстве случаев он используется с break, то есть, в качестве выбора из альтернатив + в учебниках и доках всегда идет в той же теме, что и if, наводя на мысли, что это "из одной оперы", как for и while, а потому бдительность падает + выбор ключевых слов неудачен — не наводит на мысль о goto-переходах и метках (gotocase вместо switch, например, сразу бы наводило ан нужные мысли);
2) это штука в с++ дает возможность реализовать механизм перехода по динамически определяемой метке, чего другими средствами добиться невозможно (только если использовать ассемблерные вставки). в качестве реально полезного применения можно привести возможность реализации на си
сопрограмм и парадигмы реактивного программирования (см., например,
Reactive C: An Extension of C To Program Reactive Systems)