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