Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Хочешь стать известным разработчиком? Выполняй заказы трейдеров в сервисе Фриланс!
Victor Demihov
618
Victor Demihov 2015.07.11 12:54 

 Во многих языках, таких как, например, C# есть вариант реализации передачи неопределённого количества параметров посредством модификатора params. Как подобное реализовать в МКЛ4 ?

Чую что нечто подобное реализовать всё-таки возможно, т.к. например, есть функция:

double  iCustom (string symbol,

    int timeframe,

    string name,

    ...                            // список входных параметров индикатора

    int mode,

    int shift);

В ней  как-то же реализована передача списка параметров. Как это реализовать у себя в коде?

Alexander
2441
Alexander 2015.07.11 18:10  
shanty:

 Во многих языках, таких как, например, C# есть вариант реализации передачи неопределённого количества параметров посредством модификатора params. Как подобное реализовать в МКЛ4 ?

Чую что нечто подобное реализовать всё-таки возможно, т.к. например, есть функция:

В ней  как-то же реализована передача списка параметров. Как это реализовать у себя в коде?

Из документации

Параметры, передаваемые в функцию, могут иметь умолчательные значения, которые задаются константами соответствующего типа.

Пример:

int somefunc(double a,
             double d=0.0001,
             int n=5,
             bool b=true,
             string s="passed string")
  {
   Print("Обязательный параметр a= ",a);
   Print("Переданы следующие параметры: d = ",d," n = ",n," b = ",b," s = ",s);
   return(0);
  }

 

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

Пример неправильного объявления:

int somefunc(double a,
             double d=0.0001,    // объявлено значение по умолчанию 0.0001
             int n,              // значение по умолчанию не указано !
             bool b,             // значение по умолчанию не указано !
             string s="passed string")
  {                                          
  }      

Victor Demihov
618
Victor Demihov 2015.07.11 19:41  
Roger, Вы вообще хоть частично знакомы с синтаксисом того же C# ? Я не спрашивал о параметрах по умолчанию, а спрашивал о параметрах, количество которых заранее не известно. В подобных случая применяется передача их списком в конце параметров той или иной функции. Вот это мне и нужно. Так есть варианты, когда я не в курсе сколько будет параметров по некоторых причинам. И лазить в код иной раз не охото. Проще написать универсальный вариант. Вот я об этом и спрашиваю. Это база по сути. Кто знает, тот меня понимает.
Рустам
3604
Рустам 2015.07.11 21:19  
нет, используйте массив.
Victor Demihov
618
Victor Demihov 2015.07.11 21:36  

Это как?

А сами тогда как в iCustom между параметрами так реализовали?

Рустам
3604
Рустам 2015.07.11 21:43  

как параметры по умолчанию. вы не можете вызвать первый и третий параметр индикатора например. 

Victor Demihov
618
Victor Demihov 2015.07.12 10:40  
FAQ:

как параметры по умолчанию. вы не можете вызвать первый и третий параметр индикатора например.  

То что используя параметры по умолчанию нет возможности вызвать 1-ый и 3-ий я прекрасно знаю. Вопрос был, как я уже подчеркнул ни один раз об использовании другого модификатора.

 

FAQ:

как параметры по умолчанию. вы не можете вызвать первый и третий параметр индикатора например.  

Хотя умолчательные параметры в нормальных языках всё-же возможно вызывать, если они именные. Но я, опять-таки, не о них..

Рустам
3604
Рустам 2015.07.12 11:20  

еще раз : у каждого вызываемого индикатора есть "extern\input" переменные проинициализированные в коде, хотите вызываете его с установками по умолчанию, хотите передаете им свои параметры по правилам вызова с умолчаниями. все. 

если хотите иметь что то подобное "params" - используйте в вызове функции массивы, или структуры, или  пишите класс с перегрузкой.

MQL ближе к С или С++ но никак не шарп. 

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий