Strange behavior when initializing empty cell in struct()
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
Stephen23
2024-6-20
"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
回答(1 个)
Aquatris
2024-6-20
编辑:Aquatris
2024-6-20
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 个评论
Stephen23
2024-6-20
Or if an empty cell array is required:
obj = struct(MyProp=123, MyOtherProp={{}});
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Programming Utilities 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!