Прежде всего Inc
и Write
- плохие примеры, потому что оба они получают специальную обработку от компилятора.Вы не можете написать функцию, которая ведет себя точно так же, как эти двое.Есть альтернативы, которые вы должны изучить.
Взгляните на перегрузки
Вы можете создать несколько версий вашего метода, используя различное количество параметров и разные типы.Примерно так:
procedure MyInc(var i:Integer); overload;
procedyre MyInc(var i:Integer; const N:Integer); overload;
procedure MyInc(var i:Integer; const N1, N2: Integer); overload;
procedure MyInc(var i:Integer; const N1, N2, N3: Integer):overload;
Это возможно, если необходимое количество перегрузок не так велико.Компилятор, вероятно, легко справится со многими перегрузками, но вы, вероятно, не захотите их писать.Когда количество перегрузок становится проблемой, вы можете переключиться на массивы:
Использование открытых массивов в качестве параметров
Функция может принимать параметр типа array of YourType
, и когда вы вызываете эту функцию, выможет передать столько параметров, сколько вам нужно:
procedure MyInc(var i:Integer; Vals: array of Integer);
А затем использовать его следующим образом:
MyInc(i, []); // no parameters
MyInc(i, [1]);
MyInc(i, [1, 34, 43, 12]);