Ошибки, баги, вопросы - страница 3685
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Приветствую. MQL5 не предупреждает о повторном объявлении переменных. Mql4 предупреждает. Пример:
Разные области видимости. Где Вы были примерно год, а то и два - это уже столько времени так.
Привет, Алексей.
Вроде бы тут нет неоднозначности. Переменная i из внешнего цикла будет доступна со своим значением во внутреннем цикле, только если там не объявлена переменная с таким же именем. Если объявлена, то подразумевается использование самой внутренней переменной.
Такой код
выдаёт вполне ожидаемый результат:
Если представить, что мы сделали ошибку, дав одинаковые названия переменным в таких циклах вместо разных, то она по идее, должна обнаружиться сразу, как только мы захотим воспользоваться ими обеими внутри второго цикла.
Но если мы хотим во втором цикле использовать только переменную из первого цикла, то тут действительно можно столкнуться с непонятным поведением. Поэтому предупреждение в этом случае не помешало бы.
А если во втором цикле хотим использовать только переменную второго цикла, то предупреждение будет мешать.
Переменная i из внешнего цикла будет доступна со своим значением во внутреннем цикле, только если там не объявлена переменная с таким же именем. Если объявлена, то подразумевается использование самой внутренней переменной.
Спасиб, понятно. ИМХО это плохое решение.
Лучше бы сворачивание частей кода сделали или работу i_ функций поправили.
for (int i = 10; i > 0; i--)
{
for (int i = 5; i > 0; i--)
{
}
}
В C# подругому:
A local or parameter named 'i' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter
И это правильно. Лень проверять в С++, но думаю там также как в С#
Лень проверять в С++, но думаю там также как в С#
Почти два года этому...
https://www.mql5.com/ru/forum/1111/page3491#comment_52301985
Считаю, что отсутствие предупреждения увеличивает вероятность ошибки в коде.
Считаю, что отсутствие предупреждения увеличивает вероятность ошибки в коде.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2025.02.10 16:12
Ругался. Но теперь можно писать такое.
Грубо говоря, сейчас можно скопипастить кусок кода и будет работать - не надо заморачиваться с тем, что в копипасте совпадают имена переменных.
Бывают ситуации, когда в макросах требуется такая возможность. Тогда такие предупреждения - зло.