Mercurial > octave
changeset 28903:614a23ddba7a
__default__input__.m: Overhaul function.
* __default__input__.m: Improve documentation. Don't use unnecessary '[]'
around single output argument of function. Change algorithm to operate
first over the common number of inputs and default values. Second, copy
over any remaining inputs or default values directly to output.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 13 Oct 2020 12:10:40 -0700 |
parents | 69bd3e52d0b8 |
children | 930cb0ae24fd |
files | scripts/sparse/private/__default__input__.m |
diffstat | 1 files changed, 17 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/sparse/private/__default__input__.m Tue Oct 13 11:48:30 2020 -0700 +++ b/scripts/sparse/private/__default__input__.m Tue Oct 13 12:10:40 2020 -0700 @@ -34,31 +34,39 @@ ## @item @var{def_val} is a cell array that contains the values to use ## as default. ## -## @item @var{varargin} are the input arguments +## @item @var{varargin} are the input arguments. ## @end itemize ## ## The output arguments are: ## ## @itemize @minus -## @item @var{varargout} all input arguments completed with default -## values for empty or omitted parameters. +## @item @var{varargout} are the input arguments where any empty or omitted +## parameters have been replaced with default values. ## ## @end itemize ## ## @end deftypefn - -function [varargout] = __default__input__ (def_val, varargin) +function varargout = __default__input__ (def_val, varargin) - m = length (def_val); - n = length (varargin); + m = numel (def_val); + n = numel (varargin); + count = min (m, n); - for i = 1:m - if (n < i || isempty (varargin{i})) + ## Check for missing values in input and replace with default value. + for i = 1:count + if (isempty (varargin{i})) varargout{i} = def_val{i}; else varargout{i} = varargin{i}; endif endfor + ## Copy any remaining items to output + if (n < m) + varargout(n+1:m) = def_val(n+1:m); + elseif (m < n) + varargout(m+1:n) = varargin(m+1:n); + endif + endfunction