- ? к опытным
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
- [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
Предположим объявлен массив int Mas[10], у него 10 элементов, нужно определить что тип данного элемента int, или например есть переменная double Price нужно вернуть тип этой переменной double.
Тип переменной определить можно:
void OnStart() { double a = -1.9; int b = int(a); Alert("B type: ", typename(b), ", A type: ", typename(a)); }
А вот определить, что переменная является массивом - нет.
Тип переменной определить можно:
А вот определить, что переменная является массивом - нет.
А можно ли определить тип массива? всё дело в
typename
да можно значит сделать список или что-то типа того читаю справку?
Тип переменной определить можно:
А вот определить, что переменная является массивом - нет.
void OnStart() { double a = -1.9; int b = int(a); Alert("B type: ", typename(b), ", A type: ", typename(a)); }
typename(b) определяет что b имеет тип int и возвращает int в виде строки или в виде чего?
Плохо что в виде строки а как вернуть не в виде строки а в виде самого int, вернуть в виде свойства чтобы можно было применить это не указывая тип а указав что значение это тип int?
int fun(const int value=NULL) { /* work */ } int fun(const uint value=NULL) { /* work */ } int fun(const long value=NULL) { /* work */ } int fun(const ulong value=NULL) { /* work */ } int fun(const short value=NULL) { /* work */ } int fun(const ushort value=NULL) { /* work */ } int fun(const char value=NULL) { /* work */ } int fun(const uchar value=NULL) { /* work */ } int fun(const double value=NULL) { /* work */ } int fun(const float value=NULL) { /* work */ } int fun(const datetime value=NULL) { /* work */ }
В зависимости от того какое значение отправите, та функция и сработает
Тип переменной определить можно:
А вот определить, что переменная является массивом - нет.
При помощи перегрузки можно
string MyType(double & a[]){ return "double array"; } string MyType(double & a){ return "double"; }
Плохо что в виде строки а как вернуть не в виде строки а в виде самого int, вернуть в виде свойства чтобы можно было применить это не указывая тип а указав что значение это тип int?
#property strict //+------------------------------------------------------------------+ void OnStart() { double a = 1.1; float b = (float)2.2; int c = 3; long d = 4; string e = "5.str"; Print("a = ",typeof(a)); Print("b = ",typeof(b)); Print("c = ",typeof(c)); Print("d = ",typeof(d)); Print("e = ",typeof(e)); } //+------------------------------------------------------------------+ template<typename T> T typeof(T value) { Print("This type is: ",typename(T)); return(value); } //+------------------------------------------------------------------+
0 09:11:22.060 Script tst_template EURUSD,H1: loaded successfully
0 09:11:22.072 tst_template EURUSD,H1: initialized
0 09:11:22.072 tst_template EURUSD,H1: This type is: double
0 09:11:22.072 tst_template EURUSD,H1: a = 1.1
0 09:11:22.072 tst_template EURUSD,H1: This type is: float
0 09:11:22.072 tst_template EURUSD,H1: b = 2.2
0 09:11:22.072 tst_template EURUSD,H1: This type is: int
0 09:11:22.072 tst_template EURUSD,H1: c = 3
0 09:11:22.072 tst_template EURUSD,H1: This type is: long
0 09:11:22.072 tst_template EURUSD,H1: d = 4
0 09:11:22.072 tst_template EURUSD,H1: This type is: string
0 09:11:22.072 tst_template EURUSD,H1: e = 5.str
0 09:11:22.072 tst_template EURUSD,H1: uninit reason 0
0 09:11:22.073 Script tst_template EURUSD,H1: removed
В зависимости от того какое значение отправите, та функция и сработает
У меня есть функция которая двигает массивы и я указываю для неё аргументы, я хотел сделать технологию чтобы функция могла автоматически определить тип массива и не нужно было ставить какой это массив, пришла такая идея что может каким-нибудь образом сделать сноску или что такое и вызывать эту сноску и будет происходить самоопределение типа массива. Например
void Sdv(int &mas[][],double &mas1[],double &mas2[][],datetime &mas3[][],int qt) { Расчёты } Записываем таким образом void Sdv("сноска на тип" &mas[][],"сноска на тип" &mas1[],"сноска на тип" &mas2[][],"сноска на тип" &mas3[][],int qt) { Расчёты }
Поэтому я и задаю такие странные вопросы.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования