Страницы: Пред. 1 2
RSS
Select Case: бездействие при определенном значении, Exit Select
 
Цитата
The_Prist написал: break в C# в switch необходим В КАЖДОМ условии...
Т.е. по сути это всего лишь лишняя логическая строка кода, которая в VB опущена и подразумевается по умолчанию после каждого условия.
Ну и что же Вас в моих постах заставило думать, что я считаю иначе?
По поводу пресловутого синтаксиса - так я ведь подчеркивал, что это мое сугубо личное мнение, и совершено не понимаю, что спровоцировало волну агрессии? Или я не первый высказываюсь по vba подобным образом? Не вижу ничего плохого в том, чтобы сравнивать разные языки, тем более, что Вы сами сами про них заговорили

Цитата
The_Prist написал: Для расширения кругозора: в других языках программирования аналоги Select Case
Что же касается личных выпадов в мой адрес, то я готов Вас извинить, хотя определенный недостаток Вашего воспитания не могу не отметить. Я вообще не понимаю, зачем Вы встряли в эту дискуссию, 14 постом она была фактически закончена, ответ получен..
Изменено: lucas - 08.01.2017 18:32:13
 
Агрессии нет, только объяснения.
Выпады... Это не выпады, а восприятие Вашей категоричности в вопросах, в которых или слабо разбираетесь, или совершенно не хотели слышать разумное.

Цитата
14 постом она [дискуссия] была фактически закончена
Да ну? А как же "штаны через голову" при предложенном варианте визуализации выхода? Вы и там высказались категорично, утверждаясь в своем понятии правильности синтаксиса. Привели пример с If, на который тоже получили внятное (надеюсь) объяснение.
Вам разъяснили Ваши заблуждения. Не более. Не нужно воспринимать это как личные оскорбления.
 
Я до сих пор думал, что в Си в switch можно ставить break, а можно не ставить, и в этом случае после выполнения кейса будет проверяться следующий case.
Мне такой возможности иногда не хватало в VBA, и приходилось использовать GoTo или переходить на If.
Однако пост Дмитрия (The_Prist) #29 заставил меня почитать справочники, и вот что выяснилось:
- в C++, если не поставить break, выполнение продолжится операторами следующего case, ДАЖЕ ЕСЛИ ЕГО УСЛОВИЕ НЕ ВЫПОЛНЯЕТСЯ
http://cppstudio.com/post/6691/ :
Цитата
Если не использовать оператор break, то, сразу после того, как выполнится один блок кода, программа переключится на выполнения следующего case, даже, если константное значение не будет равно значению в переменной variable.
- в С# switch вообще не позволяет "проваливаться" в следующий case, https://msdn.microsoft.com/ru-ru/library/06tc147t.aspx :
Цитата
Выполнение списка операторов в выбранном разделе switch начинается с первого оператора и продолжается по списку, обычно до достижения оператора перехода, такого как break, goto case, return или throw. В этой точке управление передается за пределы оператора switch или к другой метке case.
В отличие от C++, C# не позволяет продолжить выполнение следующего раздела switch после выполнения предыдущего раздела.
Ну и каково людям переходить с C# на C++ и обратно?  ;)
В то же время, в VB(A) можно использовать GoTo для перехода либо на другой Case для проверки условия, либо на любой оператор внутри Case для продолжения работы без проверки условия.
В Си, как я понял, в case можно использовать только константы, а в VB(A) еще и переменные, и выражения! И интервалы, и сравнения!
Так что теперь я считаю, что оператор Select Case в VB(A) предоставляет больше возможностей, чем switch в Си  8)

Добавление: ан нет, если поставить метку на Case, его условие не проверяется, и происходит выход из оператора Select Case. То же самое происходит, если передать управление извне на метку на Case. Если передать управление на оператор внутри Case, выполняется код до конца кейса, потом выход из Select Case.
Изменено: Казанский - 08.01.2017 19:35:11
 
Вообще, lucas, Вы явно что-то попутали. Ровно на 16 посте.
Вам про Фому, Вы про Ерему. Изначально я пытался узнать ровно одно: зачем перечислять значения в Case, если это нужно для одного - выхода из Select? Смысл-то в чем? Если не перечислять - будет тоже самое. Только писанины меньше.
На что Вы и ответили:
Цитата
lucas написал:
Остальное - просто рассуждения об удобстве или неудобстве синтаксиса vba.
Причем здесь синтаксис и его удобства? Он влияет лишь на написание конструкции, но не о логике построения кода. Об этом я и написал и поэтому упомянул другие языки. Ведь общий принцип и в C# и в VBA одинаков. Подчеркиваю - ПРИНЦИП. Плюс-минус нюансы. Вы же не согласились и сами начали спорить и приводить примеры C#. И до чего доспорились? Только до того, что в C# надо писать break, а в VBA нет. Дальше что? Как это повлияло на суть работы данной конструкции? Никак. И там и там поступать надо одинаково. Когда я пытался Вам это пояснить Вы сыпали какими-то категоричными утверждениями. А высказывание
Цитата
lucas написал:
И что должен решить пользователь, не изучивший рутинную матчасть vba, но знающий C#?
вообще наповал убивает. Да с чего вообще этот пользователь решил, что разные ЯП должны иметь единый синтаксис? Вы вчитайтесь сами в свое высказывание. Я не читал инструкцию к паяльнику, но зато хорошо знаю как работает машинка для тату. Вот и получилось, что как-то не так что-то набил человеку и, видимо, не тем. Думал, что паяльник так же работает... По сути так получается. И виновным в своем незнании считаете производителя. Сами как думаете - это правильно?

В общем я пытался лишь понять зачем Вы перечисляете условия, на которые не надо реагировать. Все. Ответа не получил и ладно, дело Ваше. Мне оно нужно было из спортивного интереса и из тех побуждений, что иногда начинающие изначально не с того конца начинают проблему решать и имеет смысл их направить в нужную сторону. Но тут явно без вариантов, решение Вы получили и хорошо.
Удачи!
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Ну что же, ведь ответ-то я все-таки получил. Возможно, я действительно не очень внятно задал вопрос, но Казанский-то понял сразу. В любом случае, спасибо, что пытались помочь. А по поводу рутинной части vba, это я немного, конечно, троллил по случаю праздника, не думал, что кто-то воспримет буквально. И удачи.
 
lucas, А Вы, уважаемый троль, случаем не директор Lucas Film?
There is no knowledge that is not power
Страницы: Пред. 1 2
Наверх