Допустим, вы хотите, чтобы функция foo
работала так:
foo(Variable,Parameter1,Value1);
foo(Variable,Parameter1_1,Value1,Parameter2,Value2,...);
затем с помощью рекурсии:
function[Variable]=FooBar(Variable,varargin)
N=nargin-1; %\\ Count the input parameters
if N>=2
Parameter=varargin{1};
Value=varargin{2};
% Process the first Parameter-value pair
Variable=FooBar(Variable,varargin{3:N}); %\\ Cut first Parameter-Value pair off and pass the rest to foo again
end
Такой подход позволяет использовать цепочки одиночных параметров, пар, троек, четверок и т.д.
В этом конкретном примере пары выполняются как стек LIFO, а последний непарный Parameter
игнорируется. Вы также можете добавить некоторые условия для реализации foo(IN,Parameter1,Value1,Modifier,Parameter2,Value2,...)
и многих других свойств...
Для вашего пертикулярного примера:
function[MyString]=FooBar(MyString,varargin)
N=nargin-1; %\\ Count the input parameters
if N>=2
Parameter=varargin{1};
Value=varargin{2};
MyString=regexprep(MyString,Parameter,Value)
MyString=FooBar(MyString,varargin{3:N});%\\ Cut first Parameter-Value pair off and pass the rest to foo again
end
Примеры:
>> myString='This, is a () "string"';
FooBar(myString,'()','[]','"','',',','.')
ans = This. is a [] string
>> myString='This, is a ("string")';
FooBar(myString,'()','[]','"','',',','.')
ans = This. is a (string)
>> myString='This, is a ("string")';
FooBar(myString,'(','[',')',']','"','',',','.')
ans = This. is a [string]
person
Crowley
schedule
31.03.2016
()
круглые скобки,[]
скобки и{}
фигурные скобки. Это просто условность, а не правило и уж точно не правило английского языка. - person Dan   schedule 31.03.2016()
, квадратными скобками[]
. Никто из тех, кого я знаю, не называет их скобками. Может дело в американцах... - person kkuilla   schedule 31.03.2016{}
. А также фигурные скобки -()
, квадратные скобки -[]
и фигурные скобки -{}
... В большинстве случаев я встречаю соглашение, о котором упоминал @Dan... - person Crowley   schedule 31.03.2016