Ich habe keine Ahnung, was hier vor sich geht. Ich benutze R2006b. Gibt es eine Chance, dass jemand mit einer neueren Version testen könnte, ob sie das gleiche Verhalten haben, bevor ich einen Fehlerbericht einreiche?MATLAB "Bug" (oder wirklich seltsames Verhalten) mit Strukturen und leeren Zellenarrays
Code: (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
Ausgang:
>> 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');
Es sieht aus wie die Leere/Nichts von S.something
es erlaubt, die Argumente für einen Funktionsaufruf zu verschieben. Das scheint sehr schlechtes Verhalten zu sein. Kurzfristig möchte ich etwas um mich herum finden (ich versuche eine Funktion zu machen, die Elemente zu einem anfänglich leeren Zellenfeld hinzufügt, das ein Mitglied einer Struktur ist).
Edit:
Corollary Frage: so gibt es keine Möglichkeit, eine struct
wörtliche enthält alle leeren Zellen-Arrays zu konstruieren?
AH: danke - Ich habe die Notizen in der Strukturfunktion nicht gesehen, die über die Verwendung zusätzlicher Klammern sprechen, wenn Sie ein Zellenfeld übergeben möchten. Grrr. –