Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот что бывает, когда люди не изучающие программирование в целом, начинают сразу учить MQL.
Короче создаем структуру данных (которая как бы и тип одновременно), а внутри структурка из любых типов, как вашей душе удобно.
Обьявляем структуру. Обычное обьявление переменной, но только тип будет как ИМЯ_СТРУКТУРЫ.
Потом в обьявлении функции будет тип
ИМЯ_СТРУКТУРЫ название_функции(бла бла бла)
{
бла бла бла;
СТРУКТУРА.А = 10;
CТРУКТУРА.Б = 15;
return = СТРУКТУРА
}
далее извлекаем данные, обращаясь к элементу структуры. Программирование на Си, первый курс любого тех. вуза.
Почему-то эта возможность реально используется чрезвычайно редко. Посмотрел описания языков C++, Pascal, VBA. Везде говорится, что тип возвращаемого функцией значения должен быть задан, и вовсе необязательно базовый. Однако ни разу не встретил пример функции, возвращающей значение небазового типа. Среди списков встроенных функций тоже вспомнить такую функцию не смог. Не встретил и в описаниях MQL4, MQL5. Да и сам ни разу не использовал.
Чем оказался неугоден такой способ передачи данных? Почему не прижился? Вероятно, здесь играет роль то, зачем вообще нужны функции, возвращающие значение. Можно ведь ограничиться и процедурами (в MQL и C это функции с типом void, в Паскале и VBA "процедуры"). Идею ответа нашел здесь http://www.askit.ru/custom/vba_office/m3/03_08_01_subroutines_basics.htm:
"В принципе, процедуры типа Sub тоже могут возвращать значения — при помощи переменных (об этом — ниже). Зачем же тогда нужны функции? Все очень просто: функцию можно вставлять практически в любое место программного кода."
А куда приходится вставлять? Ведь чаще всего в выражения, арифметические или логические. А в них чаще всего используются базовые типы. Получается, мало смысла вводить функцию, возвращающую структурное значение. Есть и другие неприятности, например, в Паскале функция не может возвращать файловую переменную. Поэтому считаю самым подходящим для использования вариант, описанный в сообщении выше:
Alexey Subbotin 2011.04.13 16:32 2011.04.13 15:32:53 #3 EN
void Test (int &a, int &b)
с небольшим уточнением. Значение обычно удобнее все же возвращать, числовое, строковое или булевское, а через параметры получать не только базовые, но и структурные типы.