Обсуждение:значение параметров функций по умолчанию
0 (0)
Обсуждение:значение параметров функций по умолчанию ( Обсуждение примера 25.08.2010 14:47 )
0(0)в языке RSL нельзя задавать параметры функций значениями по умолчанию.
возможно позднее сделают, а сейчас это можно сделать так:
Посмотреть пример
>> ОтветитьФантастика :) ( JVR 11.09.2010 23:56 )
0(0)Not specified
>> ОтветитьЯ что-то не понял - это ирония? (+) ( sokols 13.09.2010 10:59 )
0(0)Я пользуюсь такой конструкцией очень давно, и это удобно. При инициализации полей структуры типа document.dbt - особенно.
>> Ответитьскорее пожелание ( p2p 13.09.2010 11:19 )
0(0)кстате полезная конструкция, тоже хотел бы чтоб в рсл реализовали, чтоб написал:
[screen]
macro mymac(шифр="17")
end;
[/screen]
того глядишь сами в рстуле будут понятные макросы писать
>> Ответить
А еще есть GetParm и ParmCount :-) ( Шкурко Владимир 13.09.2010 09:57 )
0(0)Not specified
>> ОтветитьА еще вот так в 5.5 можно: ( Волшебник 13.09.2010 15:46 )
0(0)В 5.0 тоже ( sokols 13.09.2010 15:52 )
0(0)Not specified
>> Ответить
А ParmCount вообще непонятно зачем нужен (+) ( sokols 13.09.2010 15:56 )
0(0)Вот такая конструкция работает прекрасно:
macro q var i = 0, val; while(GetParm(i, val)) [## #] (i, val); i = i +1; end; end; q(1, 4, "a", NULL, date());
>> ОтветитьНапример, так: ( Шкурко Владимир 13.09.2010 16:06 )
0(0)macro ПечатьФИО(_фамилия:string/*, _имя:string, _отчество:string*/) var имя:string = "", отчество:string = ""; if(ParmCount() == 3) GetParm(1, имя); GetParm(2, отчество); PrintLn(_фамилия, " ", SubStr(имя, 1, 1), ". ", SubStr(отчество, 1, 1), "."); else PrintLn(_фамилия); end; end; ПечатьФИО("Иванов"); ПечатьФИО("Иванов", "Иван", "Сергеевич");
>> ОтветитьХм... Хотел возразить, но наткнулся на неожиданный эффект. Видимо, ошибка: (+) ( sokols 13.09.2010 16:16 )
0(0)macro q var i = 0, val; while(GetParm(i, val)) [## #] (i, val); i = i +1; end; [-------]; GetParm(256, val); [############] (val); end; q(1, 4, "a", NULL, date());
Вывод:
╒══════════════ │ 0 1 │ 1 4 │ 2 a │ 3 Undefined │ 4 13.09.2010 │------- │13.09.2010
>> ОтветитьОшибки нет ( Шкурко Владимир 13.09.2010 16:28 )
0(0)Если индекс параметра, указанный при вызове GetParm, превышает количество фактических параметров процедуры, будет возвращено значение временной переменной. В данном случае, в ней хранится последнее считанное с помощью GetParm значение. Сама GetParm в этом случае вернет FALSE.
>> ОтветитьСтранный подход. Было бы логичнее временную переменную удалить ( sokols 13.09.2010 16:38 )
0(0)Not specified
>> Ответить