Как мне получить значение result ?

 

Здравствуйте, уважаемые!

Помогите чайнику.

Есть функция

//+----------------------------------------------------------------------------------------+
//|Функция GetItem()
//|Возвращает true, если не было ошибки, и false, если ошибка была
//|В третьем параметре функции возвращается элемент массива с индексом index
//|Параметры:
//|array - имя массива
//|item - элемент массива
 
//|result - элемент массива с индексом index
//|
//+----------------------------------------------------------------------------------------+
 
bool GetItem(string array, int index, double &result)

//+----------------------------------------------------------------------------------------+
//|Функция GetItem()
//|Возвращает true, если не было ошибки, и false, если ошибка была
//|В третьем параметре функции возвращается элемент массива с индексом index
//|Параметры:
//|array - имя массива
//|item - элемент массива

//|result - элемент массива с индексом index
//|
//+----------------------------------------------------------------------------------------+

bool GetItem(string array, int index, double &result)

Функция возвращает нужное мне значение result в 3-ий параметр себя самой.

Обычно функция возвращает результат работы, т.е по идее она должна возвращать result, но она возвращает нужный мне result в

3-ий параметр себя самой.

Вопрос такой, как мне получить значение result?

 
Vert:

Вопрос такой, как мне получить значение result?

А зачем так сложно?
Может, протсто return(result); ?
 
komposter писал (а):
А зачем так сложно?
Потому что, Андрюша, он - спец по паскалю...
 
KimIV:
Потому что, Андрюша, он - спец по паскалю...
Поэтому нельзя? Или поэтому не знает что можно?
Или это я чего-то не понимаю? ;)
 
komposter:
KimIV:
Потому что, Андрюша, он - спец по паскалю...
Поэтому нельзя? Или поэтому не знает что можно?
Или это я чего-то не понимаю? ;)

Если
komposter:
Vert:

Вопрос такой, как мне получить значение result?

А зачем так сложно?
Может, протсто return(result); ?


Я же доверяю людям если они это пишут в своих учебниках, нахрена тогда он так написал?

return(result) слишком простым показался? Зачем этот амперсанд (&) перед result?

 
Vert:

Вопрос такой, как мне получить значение result?


Вызывая функцию вы передаете ей три параметра. После вызова функции, result будет в перемнной, которая при вызове функции передавалась третьей по порядку. 
 
Vert:

Я же доверяю людям если они это пишут в своих учебниках, нахрена тогда он так написал?
return(result) слишком простым показался? Зачем этот амперсанд (&) перед result?

Иногда недостаточно одного возвращаемого параметра.
 
Vert писал (а):
Зачем этот амперсанд (&) перед result?


В MQL принято, что параметры, указанные в вызове функции (в скобках) - это такие, что передаются извне в функцию и в нутри неё как-то обрабатываются. Результатом этих вычислений как правило является ОДИН параметр, который возвращает функция после окончания вычислений через return(результат).

ЕСЛИ одного параметра бывает недостаточно, а напротив, возникает необходимость вернуть несколько значений, то обычно возврщают массив. В этом случае технология предполагвет следующее:

Где-то в исходном коде (прибл. там, откуда вызывается функция) объявляется массив значений. Этот массив передаётся в функцию с префиксом &. С технической точки зрения это означает, что в функцию передаётся не копия значений переменных массива, а адрес его места жительства. Это значит, что при изменении значений элементов этого массива внутри функции, меняется значение не только соответствующих локальных переменных (элементов массива) внутри функции, но и значения "исходного" массива, переданного в функцию, объявленного (там, где объявленного) на уровень выше, т.е. не ниже, чем на уровне места вызова функции.

Иными словами - если изменить значения такого массива в функции, то меняются значения в исходном массиве.

Таким способом можно вернуть в точку вызова функции не одно значение, а более одного, а именно столько, сколько элементов содержится во всех массивах, указанных с префиксом &. Классно, правда?:)

 
SK. писал (а):
Vert писал (а):
Зачем этот амперсанд (&) перед result?


В MQL принято, что параметры, указанные в вызове функции (в скобках) - это такие, что передаются извне в функцию и в нутри неё как-то обрабатываются. Результатом этих вычислений как правило является ОДИН параметр, который возвращает функция после окончания вычислений через return(результат).

ЕСЛИ одного параметра бывает недостаточно, а напротив, возникает необходимость вернуть несколько значений, то обычно возврщают массив. В этом случае технология предполагвет следующее:

Где-то в исходном коде (прибл. там, откуда вызывается функция) объявляется массив значений. Этот массив передаётся в функцию с префиксом &. С технической точки зрения это означает, что в функцию передаётся не копия значений переменных массива, а адрес его места жительства. Это значит, что при изменении значений элементов этого массива внутри функции, меняется значение не только соответствующих локальных переменных (элементов массива) внутри функции, но и значения "исходного" массива, переданного в функцию, объявленного (там, где объявленного) на уровень выше, т.е. не ниже, чем на уровне места вызова функции.

Иными словами - если изменить значения такого массива в функции, то меняются значения в исходном массиве.

Таким способом можно вернуть в точку вызова функции не одно значение, а более одного, а именно столько, сколько элементов содержится во всех массивах, указанных с префиксом &. Классно, правда?:)

 
SK. писал (а):
В MQL принято, что...
Когда занимаешься третьим из древнейших занятий человека, то есть смотришь, как работает другой человек, возникает
масса идей, что и как ему бы еще сделать.
Если собрать ответы SK. и другие подобные ответы на вопросы форумян, то получится хорошее приложение к учебнику,
своеобразный FAQ. Достоинство его состоит в том, что реальные вопросы отражают типичные пробелы в знаниях, оставшиеся
после первого "подхода к литературе".
 

Спасибо, запутал еще больше :). Если бы я мог полностью понять то что ты написал, я бы не задавал этот вопрос :).

Я вот и спрашиваю как вернуть мне этот result, мне надо получить это значение в переменную.

bool GetItem(string array, int index, double &result)

Внутри функции вычисляется нужный мне параметр и возвращается в 3-ью переменную (&result).

Вопрос как получить значение &result?

Так чтобы я мог написать.

double Result_GetItem=... (и присвоить переменной значение &result).

Причина обращения: