Шаблоны
В современных языках программирования существует множество встроенных средств, позволяющих избегать дублирования кода и, тем самым, минимизировать количество ошибок и повышать производительность программиста. В MQL5 к числу таких средств можно отнести уже известные нам функции, объектные типы с поддержкой наследования (классы и структуры), макроопределения препроцессора и возможность включения файлов. Но этот список был бы неполным без шаблонов.
Шаблон — это специальным образом составленное обобщенное определение функции или объектного типа, на базе которого компилятор способен автоматически генерировать рабочие экземпляры этой функций или объектного типа. Полученные экземпляры содержат один и тот же алгоритм, но оперируют переменными различных типов, соответствующих конкретным условиям использования шаблона в исходном коде.
Для знатоков C++ отметим, что шаблоны MQL5 не поддерживают многие возможности шаблонов C++, в частности:
- параметры, не являющиеся типами;
- параметры со значениями по умолчанию;
- переменное количество параметров;
- специализация классов, структур и объединений (полная и частичная);
- шаблоны шаблонов.
С одной стороны, это снижает потенциал шаблонов в MQL5, но, с другой стороны, упрощает освоение материала тем, кто незнаком с этими технологиями.