Пустые массивы не имеют элементов, но имеют определенный класс. Все неабстрактные классы имеют статический метод с именем empty
который создает пустой массив того же класса. The empty
метод позволяет вам задать размерности выхода массива. Однако, по крайней мере, одна из размерностей должна быть 0
. Для примера задайте SimpleValue
класс:
classdef SimpleValue properties Value end methods function obj = SimpleValue(v) if nargin > 0 obj.Value = v; end end end end
Создайте пустой массив классов 5 на 0 SimpleValue
.
ary = SimpleValue.empty(5,0)
ary = 5x0 SimpleValue array with properties: Value
Вызывающие empty
без аргументов возвращает пустой массив 0 на 0.
Пустой объект задает класс массива. Чтобы назначить непустые объекты пустому массиву, MATLAB® вызывает конструктор классов для создания образцов класса по умолчанию для каждого другого элемента массива. После назначения непустого объекта массиву все элементы массива должны быть непустыми объектами.
Примечание
Конструктор классов должен избегать возврата пустых объектов по умолчанию.
Для примера используйте SimpleValue
заданный в разделе Initialize Object Arrays, создайте пустой массив:
ary = SimpleValue.empty(5,0); class(ary)
ans = SimpleValue
ary
- массив классов SimpleValue
. Однако это пустой массив:
ary(1)
Index exceeds matrix dimensions.
Если вы делаете назначение значению свойства, MATLAB вызывает SimpleClass
конструктор для увеличения массива до требуемого размера:
ary(5).Value = 7; ary(5).Value
ans = 7
ary(1).Value
ans = []
MATLAB заполняет элементы массива с одного по пять с SimpleValue
объекты, созданные вызовом конструктора классов без аргументов. Затем MATLAB присваивает значение свойства 7
к объекту в ary(5)
.