私がフィールドとS
を備えたサイズ0x1の構造体を持っていると仮定すると、それにフィールドを追加する最もエレガントな方法は何ですか?a
b
c
通常、私は次のようにそれを行うことができます:
S = struct('a',0,'b',0); %1x1 struct with fields a,b
S.c = 0
ただし、空の構造体を受け取った場合、これは機能しなくなります。
S = struct('a',0,'b',0);
S(1) = []; % 0x1 struct with fields a,b
S.c = 0;
% A dot name structure assignment is illegal when the structure is empty.
% Use a subscript on the structure.
私はこれに対処するための2つの方法を考えましたが、どちらも非常に醜く、解決策というよりは回避策のように感じます。(空でない構造体の可能性も適切に処理する必要があることに注意してください)。
- 構造体に何かを追加して空でないことを確認し、フィールドを追加して、構造体を再び空にします
- 必要なフィールド名を使用して新しい構造体を初期化し、元の構造体のデータを入力して、元の構造体を上書きします
空の構造体を気にするのは奇妙かもしれませんが、残念ながら、フィールド名が存在しない場合、私が管理していないコードの一部がクラッシュします。を確認しhelp struct
、help subsasgn
指定されたエラーメッセージも検索しましたが、これまでのところヒントは見つかりませんでした。したがって、助けていただければ幸いです。