欧美女同视频激情_国产原创中文字幕在线观看_4438xx亚洲最大五色丁香_成年做羞羞的视频网站在线观看_a毛片免费全部播_原神胡桃乳液vx网站进入_一区亚洲欧美中文日韩v在线观看_校园春色亚洲_搞机time软件app免费下载安装_十八禁无遮拦视频大全

新版 inputParser 類中存在的幾個問題

標(biāo)簽: 問題反饋——功能問題

邱彼鄭楠 2025-12-06 14:58:44

1. 對于可選位置參數(shù) (addOptional) 和可選參數(shù) (addParameter) 共同存在的情形, 仍不能正確的解析, 示例在原來的例子中加入 addRequired 如下:

function findArea(varargin)
    p = inputParser;
    p = addRequired(p, 'width', @(x) isnummeric(x) && isscalar(x) && (x > 0));
    p = addOptional(p, 'height', 1);
    p = addParameter(p, 'units', 'm');
    p = addParameter(p, 'shape', 'square');
    p = parse(p, varargin{:});
    
    width = p.Results.width
    height = p.Results.height
    units = p.Results.units
    shape = p.Results.shape
end

findArea(2, 3, "units", "cm") 現(xiàn)在可以正確解析了. 但是如果可選位置參數(shù)輸入不足時, 如 findArea(2, "units", "cm") 就不能正常解析了.

在 inputParser 類的代碼第 152 行定義的當(dāng)前參數(shù)位置指針 pos = 1, 有一個必須參數(shù)和一個可選位置參數(shù), pos 經(jīng)過兩次加一得到 pos = 3, 此時解析參數(shù)的時候, 剩余可選參數(shù)為 varargin(3:end) = "cm", "units" 雖然沒有像之前的版本被賦值給 "height", 但也被吞掉消失. 只剩下 "units" 不是成對出現(xiàn)導(dǎo)致解析可選參數(shù)出錯.


2. 在添加參數(shù)的時候, checkArgs(list, value, validator) 函數(shù)是通過 ismember 函數(shù)來判斷是否存在該參數(shù)名的.

ismember 只能判斷字符元胞數(shù)組, 那么在添加參數(shù)的時候只能使用字符數(shù)組, 如上面的示例 p = addOptional(p, 'width', 1); 原本使用的字符串在使用的時候就全部報錯.

這個問題只需要在 inputParser 中添加幾個 char 全部轉(zhuǎn)化成字符數(shù)組即可, 而不用關(guān)心用戶輸入的是字符還是字符串.

分別是 addParameter 函數(shù) 101, 102 行 paramName 外面添加 char(), addOptional 函數(shù) 112, 113 行 paramName 外面添加 char(), addRequired 函數(shù) 123 行添加 char().

回復(fù)

回復(fù)

重置 提交