1. Name-Value Pairs
function result = name_value_pairs(varargin) if mod(nargin, 2) == 1 % 입력인수의 개수가 짝수인지 확인 // 입력인수의 개수가 홀수면 빈 셀 배열을 반환 result = { }; return; end result = cell(nargin/2, 2); % name-value쌍을 저장할 셀 배열 초기화 for i = 1:2:nargin % 입력인수를 반복하며 result의 셀 배열을 채움 name = varargin{i}; value = varargin{i+1}; if ~ischar(name) % 이름이 char 벡터인지 확인 // char 벡터가 아니면 빈 셀 배열을 반환 result = { }; return; end result{(i+1)/2, 1} = name; % 결과 셀 배열에 name-value쌍 저장 result{(i+1)/2, 2} = value; end end |
2. Data Entry
function newDatabase = voters(database, varargin) if isempty(database) % database가 비어있는 경우 newDatabase = struct('Name', { }, 'ID', [ ]); else newDatabase = database; end if nargin <2 || mod(numel(varargin), 2) ~= 0 % 인수의 갯수가 홀수이거나 올바르지 않은 데이터의 형식이 포함된 경우를 체크 return; end voterCount = numel(newDatabase); % index 체크 for i = 1:2:numel(varargin) if ischar(varargin{i}) name = varargin{i}; else continue; end id = varargin{i+1}; if isnumeric(id) && isscalar(id) && (id >= 0) voterCount = voterCount + 1; newDatabase(voterCount).Name = name; newDatabase(voterCount).ID = double(id); else continue; end end end |