Borrar filtros
Borrar filtros

variable number of input arguments

3 visualizaciones (últimos 30 días)
kumar Atishay
kumar Atishay el 29 de Sept. de 2020
Comentada: Ameer Hamza el 29 de Sept. de 2020
write a function called name_value_pairs that has variable number of input arguments representing name_value_pairs.Naturally,they come in pairs:the first is the name,the next is the value.This means that the function must be called with an even number of actual input arguments. The function returns a single cell array which has exactly two columns:first column contains the name,while the second column contains the values.If function is called with no input argument ,or it is called with an odd number of inputs or if a name is not of char type,the function return an empty cell array. here an example run:
>>db = name_value_pairs('name','john smith','age',32,'children',{'joe','jill'})
db =
3*2 cell array
{'name'} {'john smith'}
{'age'} {[32]}
{'children'} {1*2 cell}

Respuestas (1)

Ameer Hamza
Ameer Hamza el 29 de Sept. de 2020
Editada: Ameer Hamza el 29 de Sept. de 2020
You can use varargin
function C = name_value_pairs(varargin)
assert(mod(nargin, 2)==0, 'Number of input arguments must be even.');
C = reshape(varargin, 2, []).';
end
Run it like this
db = name_value_pairs('name','john smith','age',32,'children',{'joe','jill'})
Result
>> db
db =
3×2 cell array
{'name' } {'john smith'}
{'age' } {[ 32]}
{'children'} {1×2 cell }
  2 comentarios
kumar Atishay
kumar Atishay el 29 de Sept. de 2020
thank you ,but could you solve it without assert .
Ameer Hamza
Ameer Hamza el 29 de Sept. de 2020
You can use if-block instead of assert line
if mod(nargin, 2)==1
C = {};
return;
end

Iniciar sesión para comentar.

Categorías

Más información sobre Data Import and Network Parameters en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by