Справочник MQL4 Основы языка Операции и выражения Другие операции
Другие операцииИндексирование ( [] )При обращении к i-му элементу массива значением выражения является значение переменной с порядковым номером i. Пример:
Индексом массива может быть только целое число. Допускаются не более чем четырехмерные массивы. Индексация каждого измерения производится от 0 до размер измерения-1. В частном случае одномерного массива из 50 элементов обращение к первому элементу будет выглядеть как array[0], к последнему элементу - array[49]. При доступе за пределы массива исполняющая подсистема сгенерирует критическую ошибку, и выполнение программы будет остановлено. Вызов функции с аргументами x1, x2,..., xnКаждый аргумент может представлять собой константу, переменную или выражение соответствующего типа. Передаваемые аргументы разделяются запятыми и должны находиться внутри круглых скобок, открывающая круглая скобка должна следовать за именем вызываемой функции. Значением выражения является значение, возвращаемое функцией. Если тип возвращаемого значения функции есть void, то вызов такой функции нельзя помещать справа в операции присвоения. Обратите внимание, что порядок выполнения выражений x1,..., xn гарантируется. Пример:
|
for(i=0,j=99; i<100; i++,j--) Print(array[i][j]); |
Для прямого доступа к публичным членам структур и классов используется операция точка. Синтаксис
Имя_переменной_типа_структуры.Имя_члена |
Пример:
struct SessionTime |
Каждая функция в mql4-программе имеет свой контекст исполнения. Например, системная функция Print() выполняется в глобальном контексте. Импортируемые функции вызываются в контексте соответствующего импорта. Функции-методы классов имеют контекст соответствующего класса. Синтаксис операции разрешения контекста:
[Имя_контекста]::Имя_функции(параметры) |
Если имя контекста отсутствует, то это явное указание на использование глобального контекста. В случае отсутствия операции разрешения контекста, функция ищется в ближайшем контексте. В случае отсутствия функции в локальном контексте, поиск производится в глобальном контексте.
Также операция разрешения контекста используется для определения функции-члена класса.
тип Имя_класса::Имя_функции(описание_параметров) |
Если в программе используются или могут в будущем использоваться несколько одноименных функций из разных контекстов исполнения, то может возникнуть неоднозначность. Порядок приоритета вызова функций без явного указания контекста:
Для устранения неоднозначности вызова функций явно указывайте область видимости с помощью операции разрешения контекста.
Пример:
#property script_show_inputs |
С помощью операции sizeof можно определить размер памяти которая соответствует идентификатору или типу. Операция sizeof имеет следующий формат:
Пример:
sizeof(выражение) |
В качестве выражения может быть использован любой идентификатор, либо имя типа, заключенное в скобки. Отметим, что не может быть использовано имя типа void, а идентификатор не может относится к полю битов или быть именем функции.
Если в качестве выражения указано имя статического массива (то есть, задана первая размерность), то результатом является размер всего массива (т.е. произведение числа элементов на длину типа). Если в качестве выражения указано имя динамического массива (первая размерность не задана), то результатом будет размер объекта динамического массива.
Когда sizeof применяются к имени типа структуры или класса или к идентификатору имеющему тип структуры или класса, то результатом является фактический размер структуры или класса.
Пример:
struct myStruct |
Вычисления размера происходит на этапе компиляции.
Смотри также