Есть ли возможность делать функции с переменным количеством параметров разного типа как Printf(argument, ...)? - страница 2

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В C/С++ такая возможность есть. В MQL5 внутри по всей видимости, такая возможность тоже есть. Но есть ли такая возможность для пользователя?
Так не устроит?
Шаблоны проектирования как раз таки призваны упростить структуру кода, повысить читаемость и уменьшить количество ошибок. Передавать любое количество параметров нужно например, при отправке сообщения, обертки над принтом для перенаправления/отключения вывода, форматирования и прочего. Если отойти от MQL - то такой функционал, например на C++, нужен для передачи опций при запуске другого бинарника, когда количество опций заранее неизвестно. Формирование же массива опций и его передача разрушает целостность строки при чтении и усложняет анализ кода. Никто не говорит об использовании функций телескопов в иных местах. 64 параметра - это всего лишь достаточный предел, который способен удовлетворить любую подобную задачу.
Все вопросы с количеством параметров решаются очень легко, если в качестве параметра передавать только один, но в виде структуры. В самой структуре вы можете в любой момент написания кода добавлять нужные параметры и в самой функции проверять их наличии. При этом переписывать другой код, который ссылается на данную функцию, не придется.
Все вопросы с количеством параметров решаются очень легко, если в качестве параметра передавать только один, но в виде структуры. В самой структуре вы можете в любой момент написания кода добавлять нужные параметры и в самой функции проверять их наличии. При этом переписывать другой код, который ссылается на данную функцию, не придется.
Еще раз. Вопрос в использовании функций для форматированого вывода. Т.е. аналог Print.
Все вопросы с количеством параметров решаются очень легко, если в качестве параметра передавать только один, но в виде структуры. В самой структуре вы можете в любой момент написания кода добавлять нужные параметры и в самой функции проверять их наличии. При этом переписывать другой код, который ссылается на данную функцию, не придется.
Спасибо за объяснение моего кода
Костыли только. Даже делал на 64 параметра. Но писать еще больше пришлось в коде. Отказался.
Через массив делали? Я в других языках видел такие возможности, но пригодилось только раз, когда работал с приемом битового потока.
Еще раз. Вопрос в использовании функций для форматированого вывода. Т.е. аналог Print.
Для форматированного вывода в консоль, есть функция PrintFormat
Для получения форматированной строки, есть функция StringFormat
Для форматированного вывода в консоль, есть функция PrintFormat
Для получения форматированной строки, есть функция StringFormat
Реч не идет о том, какие функции для форматирования есть. Об этом всем прекрасно изветсно. Если бы этого было достаточно - этой темы тут не было бы. Данные функции не могут обеспечить форматирования пользовательских типов, подрезку ненужной информации enum (например, мне нужно выводить H1 вместо PERIOD_H1), а так же отключать вывод в зависимости от параметра Verbose. Вставлять проверку уровня Verbose перед каждым PrintFormat верх идиотизма.
Данные функции не могут обеспечить форматирования пользовательских типов
Зачем использовать пользовательские типы? Для своего удобства?
Ну так откажитесь от пользовательских типов, в пользу дальнейших возможностей.
подрезку ненужной информации enum (например, мне нужно выводить H1 вместо PERIOD_H1)
Для ускорения доступа, можно все периоды описать в switch конструкции.
По другим вопросам тоже наверно найдутся решения, при должном подходе.
Может лучше просто по другому спроектировать задачу.
Задача спроектирована, решение найдено, к чему эти комменты вообще?
Задача спроектирована, решение найдено, к чему эти комменты вообще?
Кхм. Как бы не видно поста об этом Вадимом.
Типа всем спасибо, решение найдено.
А своё возмущение оставь при себе, не с тобой было общение.