Настройте отображение нескалярных объектов, включая пустые объектные массивы.
Примечание
Этот пример использует EmployeeInfo
класс, описанный в разделе «Класс с отображением объектов по умолчанию».
Цель этого настроенного отображения состоит в том, чтобы:
Создайте пользовательский заголовок, используя некоторые элементы заголовка по умолчанию
Отобразите подмножество информации о свойствах для каждого объекта в массиве.
Список указателей на удаленные объекты в массиве с помощью char
вектор со ссылками на документацию для указателя объектов и класса.
Отображение пустых объектов с небольшим изменением заголовка по умолчанию
Вот настроенное отображение массива из трех EmployeeInfo
объекты
1x3 EmployeeInfo array with members:
1. Employee:
Name: 'Bill Tork'
Department: 'Product Development'
2. Employee:
Name: 'Alice Blackwell'
Department: 'QE'
3. Employee:
Name: 'Nancy Green'
Department: 'Documentation'
Удаленные указатели на объекты в массиве указывают на их состояние:
1x3 EmployeeInfo members: 1. Employee: Name: 'Bill Tork' Department: 'Product Development' 2. handle to deleted EmployeeInfo 3. Employee: Name: 'Nancy Green' Department: 'Documentation'
Чтобы достичь желаемого результата, EmployeeInfo
класс переопределяет следующие методы matlab.mixin.CustomDisplay
класс:
displayNonScalarObject
- Вызывается для отображения непустых объектных массивов
displayEmptyObject
- Вызывается, чтобы отобразить пустые объектные массивы
MATLAB® вызывает displayNonScalarObject
метод для отображения объектных массивов. Переопределение этого метода в EmployeeInfo
класс:
Создает текст заголовка с помощью convertDimensionsToString
для получения размера и getClassNameForHeader
массива для получения имени класса со ссылкой на справку для этого класса.
Отображение измененного текста заголовка.
Циклы через элементы массива, построение двух различных подглавов в зависимости от состояния отдельного объекта. В цикле этот метод:
Обнаруживает указатели на удаленные объекты (используя isvalid
класс Handle method). Использует getDeletedHandleText
и getClassNameForHeader
чтобы создать текст для элементов массива, которые являются указателями на удаленные объекты.
Создает пользовательский подзаголовок для допустимых элементов объекта в массиве
Создает PropertyGroup
объект, содержащий Name
и Department
свойства для допустимых objects
Использует displayPropertyGroups
статический метод для генерации отображения свойств для допустимых объектов.
Вот реализация displayNonScalarObjects
:
methods (Access = protected) function displayNonScalarObject(objAry) dimStr = matlab.mixin.CustomDisplay.convertDimensionsToString(objAry); cName = matlab.mixin.CustomDisplay.getClassNameForHeader(objAry); headerStr = [dimStr,' ',cName,' members:']; header = sprintf('%s\n',headerStr); disp(header) for ix = 1:length(objAry) o = objAry(ix); if ~isvalid(o) str1 = matlab.mixin.CustomDisplay.getDeletedHandleText; str2 = matlab.mixin.CustomDisplay.getClassNameForHeader(o); headerInv = [str1,' ',str2]; tmpStr = [num2str(ix),'. ',headerInv]; numStr = sprintf('%s\n',tmpStr); disp(numStr) else numStr = [num2str(ix),'. Employee:']; disp(numStr) propList = struct('Name',o.Name,... 'Department',o.Department); propgrp = matlab.mixin.util.PropertyGroup(propList); matlab.mixin.CustomDisplay.displayPropertyGroups(o,propgrp); end end end end
MATLAB вызывает displayEmptyObject
метод для отображения пустых объектных массивов. Реализация этого метода в EmployeeInfo
класс создает пользовательский заголовок для пустых объектов после следующих шагов:
Получает измерения массива в символ формате с помощью convertDimensionsToString
статический метод.
Получение текста с именем класса, связанным с helpPopup
функция, использующая getClassNameForHeader
статический метод.
Создает и отображает пользовательский текст для пустых массивов.
methods (Access = protected) function displayEmptyObject(obj) dimstr = matlab.mixin.CustomDisplay.convertDimensionsToString(obj); className = matlab.mixin.CustomDisplay.getClassNameForHeader(obj); emptyHeader = [dimstr,' ',className,' with no employee information']; header = sprintf('%s\n',emptyHeader); disp(header) end end
Для примера - пустой EmployeeInfo
объект отображается следующим образом:
Empt = EmployeeInfo.empty(0,5)
Empt =
0x5 EmployeeInfo with no employee information