ここで何が起こっているのか分かりません。私はR2006bを使用しています。私はバグレポートを提出する前に、新しいバージョンの誰かが同じ動作をするかどうかをテストすることができます。MATLAB構造体と空のセル配列を持つ "バグ"(または実際には奇妙な動作)
コード:(bug1.m
)
function bug1
S = struct('nothing',{},'something',{});
add_something(S, 'boing'); % does what I expect
add_something(S.something,'test'); % weird behavior
end
function add_something(X,str)
disp('X=');
disp(X);
disp('str=');
disp(str);
end
出力:
>> bug1
X=
str=
boing
X=
test
str=
??? Input argument "str" is undefined.
Error in ==> bug1>add_something at 11
disp(str);
Error in ==> bug1 at 4
add_something(S.something,'test');
S.something
の空虚/虚無が、それは関数呼び出しの引数をシフトすることを可能にするように見えます。これは非常に悪い行動のようです。短期間に私はそれを見つけ出したい(構造体のメンバーである最初は空のセル配列にアイテムを追加する関数を作ろうとしている)。
編集:
推論質問:そうstruct
リテラル含む任意の空のセル配列を構築する方法はありませんか?
AH:ありがとうございました - セル配列を渡すときはいつも、余分な中カッコを使用することについて話しているstruct関数の注釈は表示されませんでした。 Grrr。 –