Пустые массивы не имеют никаких элементов, но определенного класса. Все неабстрактные классы имеют статический метод под названием empty
это создает пустой массив того же класса. 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)
.