Strange behavior when initializing empty cell in struct()
Afficher commentaires plus anciens
Structs initialized with an empty cell using both {} and cell.empty within a struct() returns an empty struct object.
The following function reproduces that:
function print_hello_world()
obj = struct(MyProp=123, MyOtherProp={}); % or MyOtherProp=cell.empty
disp(obj)
disp(isempty(obj))
end
The obj variable is empty when running print_hello_world.
I have resorted to the following to go around this issue:
function print_hello_world()
obj = struct(MyProp=123);
obj.MyOtherProp = {};
disp(obj)
disp(isempty(obj))
end
The value of obj is as expected when running the above.
1 commentaire
Stephen23
le 20 Juin 2024
"Structs initialized with an empty cell using both {} and cell.empty within a struct() returns an empty struct object."
Exactly as documented here: https://www.mathworks.com/help/matlab/ref/struct.html#d126e1620618
Réponses (1)
If you want to define the property as empty, then you should use '[]' instead of '{}'.
obj = struct(MyProp=123, MyOtherProp=[]);
disp(obj)
s = struct(field1,value1,...,fieldN,valueN) creates a structure array with multiple fields.
- ...
- If any value input is an empty cell array, {}, then output s is an empty (0-by-0) structure. To specify an empty field and keep the values of the other fields, use [] as a value input instead.
1 commentaire
Stephen23
le 20 Juin 2024
Or if an empty cell array is required:
obj = struct(MyProp=123, MyOtherProp={{}});
Catégories
En savoir plus sur Structures dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!