Скачать MetaTrader 5

Обращение к переменной по ссылке

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зарегистрируйся на MQL5.community и оставляй комментарии!
KhaidariN
22
KhaidariN 2016.09.06 17:41 

Товарищи, я в MQL5 новичок, подскажите как можно реализовать такую идею.

Есть к примеру структура : 

struct any_struct
  {
   int field1;
   int field2;
  };

Хочу реализовать такой цикл обращений:

any_struct local_struct;
string field_name;
for(int i=1;i<=2;i++)
  {
   StringConcatenate(field_name,"local_struct.field",i);
   /*Обращение к полю с названием field_name*/
   /*...*/
  }

Подскажите, есть ли в MQL5 возможность подобного обращения к переменным?

Vladimir Karputov
Модератор
46059
Vladimir Karputov 2016.09.06 17:44  
KhaidariN:

Товарищи, я в MQL5 новичок, подскажите как можно реализовать такую идею.

Есть к примеру структура : 

Хочу реализовать такой цикл обращений:

Подскажите, есть ли в MQL5 возможность подобного обращения к переменным?

Обращение к полям структуры: local_struct.field1 или local_struct.field2

Alexey Volchanskiy
16678
Alexey Volchanskiy 2016.09.06 18:53  
KhaidariN:

Товарищи, я в MQL5 новичок, подскажите как можно реализовать такую идею.

Есть к примеру структура : 

Хочу реализовать такой цикл обращений:

Подскажите, есть ли в MQL5 возможность подобного обращения к переменным?

Нет, формировать имена переменных из строкового выражения на лету нельзя. В Матлабе, например можно. Наверняка есть и другие языки с подобной фичей.
pavlick_
393
pavlick_ 2016.09.06 19:34  
Если массив int'ов не устраивает и строка формируется во время выполнения, то можно поинтересоваться на тему ассоциативных массивов. Например С++:
map<string,int> m;
 m["Вася"]=0;
 m["Петя"]=1;
 m["Федор"]=2;
int val = m["Вася"];

Чего-то готового в стандартной библиотеке не нашёл. Но есть вроде шаблоны классов, можно написать свой универсальный контейнер, наверное.
Alexey Volchanskiy
16678
Alexey Volchanskiy 2016.09.06 23:41  
pavlick_:
Если массив int'ов не устраивает и строка формируется во время выполнения, то можно поинтересоваться на тему ассоциативных массивов. Например С++:

Чего-то готового в стандартной библиотеке не нашёл. Но есть вроде шаблоны классов, можно написать свой универсальный контейнер, наверное.

Уже написано добрым человеком ) Сам пользуюсь, вещь.

https://www.mql5.com/ru/articles/1334 

Рецепты MQL5 - Реализуем ассоциативный массив или словарь для быстрого доступа к данным
Рецепты MQL5 - Реализуем ассоциативный массив или словарь для быстрого доступа к данным
  • 2015.03.23
  • Vasiliy Sokolov
  • www.mql5.com
В данной статье описывается специальный алгоритм, позволяющий эффективно получать доступ к элементам по их уникальному ключу. В качестве ключа может быть использован любой базовый тип данных, например ключом могут быть строки или целочисленные переменные. Такой контейнер данных принято называть словарем или ассоциативным массивом. С его помощью решать многие задачи становиться гораздо проще и эффективней.
Dmitry Fedoseev
42919
Dmitry Fedoseev 2016.09.07 00:07  

Обратите внимание в первом посте

for(int i=1;i<=2;i++)

Сам собой напрашивается массив

any_struct local_struct[99];

Или в структуре массивы полей:

struct any_struct
  {
   int field1[99];
   int field2[99];
  };
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий