Переформулирую свой вопрос , что бы он стал более понятен. ВОПРОС Можно ли в mql4 элементу массива присвоить не значение константы, не значение переменной( без самой переменной), а выражение , или переменную вместе с ее значением ? Например LoS[0]= х+у ; Где , например изначально эти переменные инициализированы х = 10, а у = 20 и переменная LoS[0] после присвоения ей выражения х+у содержала бы значение 30. То, есть в LoS[0] должна попадать не только сумма значений Х и У, но в LoS[0] должны попадать и сами переменные Х и У вместе со своими значениями. А потом, после изменения в программе значения переменной х с 10 на 30 , значение элемента массива LoS[0] автоматически стало бы 50 поскольку значение х в коде изменилось на 30. То есть в этом случае для каждого изменения значения LoS[0] не нужно было бы делать стандартную операцию присвоения LoS[0]= х+у ; А поскольку Х и У(как переменные) уже находятся внутри LoS[0], то изменение значения LoS[0] происходило бы автоматически , без операции присвоения , после того как в программе изменялось бы значение Х и(или) У Если в LoS[0] попадают только значения Х и У , то для изменения значения LoS[0] каждый раз нужно делать операция присвоения. Если в LoS[0] попадают НЕ только значения Х и У ,но и сами переменные Х и У , то для изменения значения LoS[0] каждый раз НЕ нужно делать операция присвоения, но достаточно изменить в коде значение переменных Х и(или) У.
Нет. Так, как хотите Вы не получится. Так или иначе придется выполнять некий код, который будет менять элементы массива.
Но лично у меня возникает вопрос: зачем нужен массив, если ВСЕ его элементы ВСЕГДА хранят одинаковые значения?
Переформулирую свой вопрос , что бы он стал более понятен. ВОПРОС Можно ли в mql4 элементу массива присвоить не значение константы, не значение переменной( без самой переменной), а выражение , или переменную вместе с ее значением ? Например LoS[0]= х+у ; Где , например изначально эти переменные инициализированы х = 10, а у = 20 и переменная LoS[0] после присвоения ей выражения х+у содержала бы значение 30. То, есть в LoS[0] должна попадать не только сумма значений Х и У, но в LoS[0] должны попадать и сами переменные Х и У вместе со своими значениями. А потом, после изменения в программе значения переменной х с 10 на 30 , значение элемента массива LoS[0] автоматически стало бы 50 поскольку значение х в коде изменилось на 30. То есть в этом случае для каждого изменения значения LoS[0] не нужно было бы делать стандартную операцию присвоения LoS[0]= х+у ; А поскольку Х и У(как переменные) уже находятся внутри LoS[0], то изменение значения LoS[0] происходило бы автоматически , без операции присвоения , после того как в программе изменялось бы значение Х и(или) У Если в LoS[0] попадают только значения Х и У , то для изменения значения LoS[0] каждый раз нужно делать операция присвоения. Если в LoS[0] попадают НЕ только значения Х и У ,но и сами переменные Х и У , то для изменения значения LoS[0] каждый раз НЕ нужно делать операция присвоения, но достаточно изменить в коде значение переменных Х и(или) У.
Нет, это свойство массива, размерность задается числом, не переменной. Индекс это инт число или переменная инт, которая меньше размерности. А элемент массива может хранить у себя переменные различных типов, которые туда можно записать, и потом перезаписать. Функцию в нашем случае записать в элемент массива нельзя, только результат. Это в других языках тока массивы функций, операций...))) И то это надстройка записи, а в реале сперва вычисляются результаты и потом записываются в массив по адресу.
Sergey Gridnev #: Нет. Так, как хотите Вы не получится. Так или иначе придется выполнять некий код, который будет менять элементы массива.
Но лично у меня возникает вопрос: зачем нужен массив, если ВСЕ его элементы ВСЕГДА хранят одинаковые значения?
Спасибо за ответ. Но в моем предполагаемом массивы значения всех элементов должны меняться постоянно. Но я хотел их менять не традиционным способом, а так как описал в своем посте и так как к сожалению , по вашему мнению, поменять не получится.
Нет, это свойство массива, размерность задается числом, не переменной. Индекс это инт число или переменная инт, которая меньше размерности. А элемент массива может хранить у себя переменные различных типов, которые туда можно записать, и потом перезаписать. Функцию в нашем случае записать в элемент массива нельзя, только результат. Это в других языках тока массивы функций, операций...))) И то это надстройка записи, а в реале сперва вычисляются результаты и потом записываются в массив по адресу.
Понял. Спасибо за помощь. Тогда в связи с этим вопросом хотел бы для себя усвоить такое понятие как ССЫЛКА на . То есть можно ли в переменную поместить не значение переменной, а ссылку на эту переменную в которой находится значение ? И вообще ... есть ли в mql 4 такое понятие как ССЫЛКА НА . Если есть, то что это такое и на что может быть ССЫЛКА. Спасибо.
Понял. Спасибо за помощь. Тогда в связи с этим вопросом хотел бы для себя усвоить такое понятие как ССЫЛКА на . То есть можно ли в переменную поместить не значение переменной, а ссылку на эту переменную в которой находится значение ? И вообще ... есть ли в mql 4 такое понятие как ССЫЛКА НА . Если есть, то что это такое и на что может быть ССЫЛКА. Спасибо.
Только на объекты классов. На переменные базовых типов не получится хранить ссылки.
Sergey Gridnev #: 1) В MQL4 есть классы и, соответственно, объекты классов.
2) Конечно, можно сделать класс-обёртку для хранения переменной базового типа.
Спасибо за ценную информацию. Как я понял в MQL4 я могу создать класс объектов и поместить в этот класс одну обычную переменную , после чего эта обычная переменная станет объектом этого класса.
ВОПРОС А после этого ссылку на данный объект (переменную со значением) я смогу присвоить элементу массива?
Спасибо за ценную информацию. Как я понял в MQL4 я могу создать класс объектов и поместить в этот класс одну обычную переменную , после чего эта обычная переменная станет объектом этого класса.
ВОПРОС А после этого ссылку на данный объект (переменную со значением) я смогу присвоить элементу массива?
Амперсанд, ссылка, это ссылка на переменную. Используется, когда в функции вычисляются, именно вычисляются различные переменные, и результат запишется в эти переменные. Без ссылки переменные в функции используются ДЛЯ вычислений.
int FileOpenF(string File_NameArg,int&HandleArg)
{
HandleArg=FileOpen(File_NameArg,FILE_CSV|FILE_WRITE,";");//Открытие файлаif(HandleArg==-1) // Неудача при открытии файла
{
Alert("Ошибка при открытии файла. ",File_NameArg,// Сообщение об ошибке"Возможно, файл занят другим приложением Handle= ",HandleArg);
}
return(HandleArg);
}
// Вызовы
FileOpenF(File_Name,Handle);
Alert("Открыт файл. File_Name ",File_Name,
" Handle ",Handle);
FileOpenF(File_Name1,Handle1);
Alert("Открыт файл. File_Name1 ",File_Name1,
" Handle1 ",Handle1);
Хендл файла вычисляется и записывается в переменную, которая по ссылке входит в аргументы функции.
Без амперсанда запись для 2х разный файлов была бы такая
int FileTest1()
{
Handle1=FileOpen(File_Name1,FILE_READ|FILE_CSV|FILE_WRITE,";");//Открытие файлаif(Handle1==-1) // Неудача при открытии файла
{
Alert("Ошибка при открытии файла. ",File_Name1,// Сообщение об ошибке"Возможно, файл занят другим приложением");
return(Handle1);
}
return(Handle1);
}
//+------------------------------------------------------------------+int FileTest2()
{
Handle2=FileOpen(File_Name2,FILE_READ|FILE_CSV|FILE_WRITE,";");//Открытие файлаif(Handle==-1) // Неудача при открытии файла
{
Alert("Ошибка при открытии файла. ",File_Name2,// Сообщение об ошибке"Возможно, файл занят другим приложением");
return(Handle2);
}
return(Handle2);
}
У вас наоборот понимание, по ссылке происходит запись в переменную, а не получение значения переменной.
Про классы лучше почитать сначала. Не все там просто.
Для использования объектно-ориентированного программирования (ООП) вовсе не обязательно знать что такое полиморфизм, инкапсуляция... можно просто пользоваться его возможностями. В статье рассматриваются основные возможности ООП с примерами их использования.
Амперсанд, ссылка, это ссылка на переменную. Используется, когда в функции вычисляются, именно вычисляются различные переменные, и результат запишется в эти переменные. Без ссылки переменные в функции используются ДЛЯ вычислений.
Хендл файла вычисляется и записывается в переменную, которая по ссылке входит в аргументы функции.
Без амперсанда запись для 2х разный файлов была бы такая
У вас наоборот понимание, по ссылке происходит запись в переменную, а не получение значения переменной.
Про классы лучше почитать сначала. Не все там просто.
Спасибо большое за развернутое объяснение. Теперь я все понял по своему вопросу.
Переформулирую свой вопрос , что бы он стал более понятен.
ВОПРОС Можно ли в mql4 элементу массива присвоить не значение константы, не значение переменной( без самой переменной), а выражение , или переменную вместе с ее значением ?
Например LoS[0]= х+у ; Где , например изначально эти переменные инициализированы х = 10, а у = 20 и переменная LoS[0] после присвоения ей выражения х+у содержала бы значение 30. То, есть в LoS[0] должна попадать не только сумма значений Х и У, но в LoS[0] должны попадать и сами переменные Х и У вместе со своими значениями.
А потом, после изменения в программе значения переменной х с 10 на 30 , значение элемента массива LoS[0] автоматически стало бы 50 поскольку значение х в коде изменилось на 30.
То есть в этом случае для каждого изменения значения LoS[0] не нужно было бы делать стандартную операцию присвоения LoS[0]= х+у ; А поскольку Х и У(как переменные) уже находятся внутри LoS[0], то изменение значения LoS[0] происходило бы автоматически , без операции присвоения , после того как в программе изменялось бы значение Х и(или) У
Если в LoS[0] попадают только значения Х и У , то для изменения значения LoS[0] каждый раз нужно делать операция присвоения. Если в LoS[0] попадают НЕ только значения Х и У ,но и сами переменные Х и У , то для изменения значения LoS[0] каждый раз НЕ нужно делать операция присвоения, но достаточно изменить в коде значение переменных Х и(или) У.
Переформулирую свой вопрос , что бы он стал более понятен.
ВОПРОС Можно ли в mql4 элементу массива присвоить не значение константы, не значение переменной( без самой переменной), а выражение , или переменную вместе с ее значением ?
Например LoS[0]= х+у ; Где , например изначально эти переменные инициализированы х = 10, а у = 20 и переменная LoS[0] после присвоения ей выражения х+у содержала бы значение 30. То, есть в LoS[0] должна попадать не только сумма значений Х и У, но в LoS[0] должны попадать и сами переменные Х и У вместе со своими значениями.
А потом, после изменения в программе значения переменной х с 10 на 30 , значение элемента массива LoS[0] автоматически стало бы 50 поскольку значение х в коде изменилось на 30.
То есть в этом случае для каждого изменения значения LoS[0] не нужно было бы делать стандартную операцию присвоения LoS[0]= х+у ; А поскольку Х и У(как переменные) уже находятся внутри LoS[0], то изменение значения LoS[0] происходило бы автоматически , без операции присвоения , после того как в программе изменялось бы значение Х и(или) У
Если в LoS[0] попадают только значения Х и У , то для изменения значения LoS[0] каждый раз нужно делать операция присвоения. Если в LoS[0] попадают НЕ только значения Х и У ,но и сами переменные Х и У , то для изменения значения LoS[0] каждый раз НЕ нужно делать операция присвоения, но достаточно изменить в коде значение переменных Х и(или) У.
Нет, это свойство массива, размерность задается числом, не переменной. Индекс это инт число или переменная инт, которая меньше размерности. А элемент массива может хранить у себя переменные различных типов, которые туда можно записать, и потом перезаписать. Функцию в нашем случае записать в элемент массива нельзя, только результат. Это в других языках тока массивы функций, операций...))) И то это надстройка записи, а в реале сперва вычисляются результаты и потом записываются в массив по адресу.
Нет. Так, как хотите Вы не получится. Так или иначе придется выполнять некий код, который будет менять элементы массива.
Спасибо за ответ. Но в моем предполагаемом массивы значения всех элементов должны меняться постоянно. Но я хотел их менять не традиционным способом, а так как описал в своем посте и так как к сожалению , по вашему мнению, поменять не получится.
Нет, это свойство массива, размерность задается числом, не переменной. Индекс это инт число или переменная инт, которая меньше размерности. А элемент массива может хранить у себя переменные различных типов, которые туда можно записать, и потом перезаписать. Функцию в нашем случае записать в элемент массива нельзя, только результат. Это в других языках тока массивы функций, операций...))) И то это надстройка записи, а в реале сперва вычисляются результаты и потом записываются в массив по адресу.
Понял. Спасибо за помощь. Тогда в связи с этим вопросом хотел бы для себя усвоить такое понятие как ССЫЛКА на . То есть можно ли в переменную поместить не значение переменной, а ссылку на эту переменную в которой находится значение ? И вообще ... есть ли в mql 4 такое понятие как ССЫЛКА НА . Если есть, то что это такое и на что может быть ССЫЛКА.
Спасибо.
Понял. Спасибо за помощь. Тогда в связи с этим вопросом хотел бы для себя усвоить такое понятие как ССЫЛКА на . То есть можно ли в переменную поместить не значение переменной, а ссылку на эту переменную в которой находится значение ? И вообще ... есть ли в mql 4 такое понятие как ССЫЛКА НА . Если есть, то что это такое и на что может быть ССЫЛКА.
Спасибо.
Только на объекты классов. На переменные базовых типов не получится хранить ссылки.
Спасибо. А я правильно понимаю, что в mql 4 нет объектов классов и что обычную переменную в mql 4 нельзя преобразовать в объект класса?
Спасибо. А я правильно понимаю, что в mql 4 нет объектов классов и что обычную переменную в mql 4 нельзя преобразовать в объект класса?
1) В MQL4 есть классы и, соответственно, объекты классов.
Спасибо за ценную информацию. Как я понял в MQL4 я могу создать класс объектов и поместить в этот класс одну обычную переменную , после чего эта обычная переменная станет объектом этого класса.
ВОПРОС А после этого ссылку на данный объект (переменную со значением) я смогу присвоить элементу массива?
Спасибо за ценную информацию. Как я понял в MQL4 я могу создать класс объектов и поместить в этот класс одну обычную переменную , после чего эта обычная переменная станет объектом этого класса.
ВОПРОС А после этого ссылку на данный объект (переменную со значением) я смогу присвоить элементу массива?
Амперсанд, ссылка, это ссылка на переменную. Используется, когда в функции вычисляются, именно вычисляются различные переменные, и результат запишется в эти переменные. Без ссылки переменные в функции используются ДЛЯ вычислений.
Хендл файла вычисляется и записывается в переменную, которая по ссылке входит в аргументы функции.
Без амперсанда запись для 2х разный файлов была бы такая
У вас наоборот понимание, по ссылке происходит запись в переменную, а не получение значения переменной.
Про классы лучше почитать сначала. Не все там просто.
Амперсанд, ссылка, это ссылка на переменную. Используется, когда в функции вычисляются, именно вычисляются различные переменные, и результат запишется в эти переменные. Без ссылки переменные в функции используются ДЛЯ вычислений.
Хендл файла вычисляется и записывается в переменную, которая по ссылке входит в аргументы функции.
Без амперсанда запись для 2х разный файлов была бы такая
У вас наоборот понимание, по ссылке происходит запись в переменную, а не получение значения переменной.
Про классы лучше почитать сначала. Не все там просто.
Спасибо большое за развернутое объяснение. Теперь я все понял по своему вопросу.