31
假設我有一個函數dummy
,帶有2個參數。參數在函數調用中沒有提供時可以有默認值。但我怎麼知道是不是提供了一個參數?如何檢查函數調用中是否提供了參數?
我知道我可以使用nargin
,這樣
function dummy(arg1, arg2)
if nargin < 2
arg2 = 0;
end
if nargin < 1
arg1 = 0;
end
% function body
我想知道我是否可以檢查是否論據是基於參數名供應嗎?像supplied(arg2) == false
。
我問這是因爲,有時我想在參數列表的前面添加新的參數(因爲它可能沒有默認值),然後我必須更改所有的if nargin ...
。如果我可以通過名字檢查,則不需要改變。
這比nargin好得多,因爲你沒有改變的情況下,你的代碼改變過函數中參數的順序。 – 2011-12-21 15:16:10
我通常也加上'... | isempty(arg1)',所以用戶可以跳過'arg1',但是提供'arg2'。當然如果'arg1'不能爲空。 – yuk 2011-12-21 16:56:52
Abosultely,但我認爲這不是真的回答這個問題。無論如何,我編輯了答案,並且我認爲如果'arg1'不存在,你必須使用'||'(Short-Circuit Operator)來確保沒有錯誤。 – Oli 2011-12-21 19:53:25